Вопрос

У меня запущена программа командной строки PHP.И я хочу подключиться к оболочке mysql прямо из PHP.Я делал это раньше в Python, используя os.execvp, Но я не могу заставить то же самое работать в PHP.

Я попробовал следующие функции:

  • система
  • пасстру
  • исполнительный
  • оболочка_exec

пример:

system('mysql -u root -pxxxx db_name');

Но все они, похоже, ждут, пока mysql завершит работу и вернет что-то.Чего я действительно хочу, так это чтобы PHP запустил оболочку mysql, а затем самостоятельно вышел из нее.есть какие-нибудь идеи?

Это было полезно?

Решение

Если вы хотите, чтобы команды оболочки были интерактивными, используйте:

system("mysql -uroot -p db_name > `tty`");

Это будет работать в большинстве случаев, но выйдет из строя, если вы не находитесь в терминале.

Другие советы

Предоставьте MySQL скрипт для запуска, который отделен от PHP-скрипта:

system('mysql -u root -pxxxx db_name < script.mysql');

В дополнение к тому, что сказал акросман, вы также можете использовать -e переключитесь на передачу SQL из командной строки.

$sql = ".....";
system("mysql -u root -pxxxx db_name -e \"$sql\"");

Кроме того, я надеюсь, что вы на самом деле не подключаетесь к базе данных как root из PHP-приложения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top