Mysql 命令通过 shell_exec,只有第一个有效

Mysql command via shell_exec, only the first one works

我需要通过 shell_exec 运行 几个 sql 命令。 第一个完美运行,但其他的不行。

我通过 shell_exec 回应了命令 运行,并且这些命令在终端中有效。

我做错了什么?

$test1 = shell_exec('sudo mysql -u root -e "create database '.$name_db.';"');

$test2 = shell_exec('sudo mysql -u root -e "create user '.$user_db.'@localhost identified by '.$pass_db.';"');

$test3 = shell_exec('sudo mysql -u root -e "grant all privileges on '.$name_db.'.* to \''.$user_db.'\'@localhost;"');

$test4 = shell_exec('sudo mysql -u root -e "flush privileges";');

$test5 = shell_exec("sudo zcat $path_db_zip | mysql -u root $name_db");

所有“$test*”打印'NULL'。

更好的方法是将其放在一个sh文件中并作为参数发送。

cat  "mysql -u root -e create database ``;create user ``@`localhost identified by ; grant all privileges on `` to ``@`localhost` with grant option; flush privileges;" > /addMysql.sh

然后 运行 shel_exec( sudo /addMysql.sh $db $username $password)

我没有测试过,但你可以这样做。