PHP MySQL exec命令不起作用


PHP MySQL exec command not working

我在下面写了这段代码,查看客户端是否处于特定状态,然后在客户端处于特定值时退出。我已经测试了查询和syslog所有传入的变量,以确保它们不是空的。然而,exec命令的返回值是1。$out为空。

exec('/usr/bin/mysql --defaults-extra-file=database-user.cnf my_db -e "SELECT client_state FROM my_table WHERE transfer_id = '.$transfer_id.' AND client_id = '.$cid.'"', $out, $ret);
if($out == 15)
{
    syslog(LOG_INFO, "Transfer to client ".$client->getName()." has already been completed on this transfer")
    exit(EXIT_OK);
}

由于输出为空,它将跳过我的if语句,了解为什么这个命令不起作用以及为什么输出为空。

查看exec函数的签名:

string exec ( string $command [, array &$output [, int &$return_var ]] )

$out变量(如果命令正确,则)将是一个数组,即使只有一个输出行,它仍然是一个阵列
要知道您的命令是否成功执行,您必须检查$ret变量的值。如果它不是零,那么你执行的任何操作都不顺利。一个干净的退出标记为程序返回0。

不过,我一辈子都无法理解为什么你会麻烦执行这样的查询。如果您运行了mysql,并且安装了php,为什么不使用mysqli_*PDO呢?它将为您省去很多麻烦,并将提高脚本的性能和安全性。