PHP MySQL exec命令不工作

PHP MySQL exec命令不工作,php,mysql,exec,Php,Mysql,Exec,我在下面编写了这段代码,它查看客户机是否处于某个状态,然后如果具有某个值就退出。我已经测试了正在传入的查询和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 clie

我在下面编写了这段代码,它查看客户机是否处于某个状态,然后如果具有某个值就退出。我已经测试了正在传入的查询和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
函数的签名:

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);
}
string exec ( string $command [, array &$output [, int &$return_var ]] )
$out
变量(如果您的命令正确)将是一个数组,即使只有一个输出行,它仍然是一个数组。
要知道命令是否成功执行,必须检查
$ret
变量的值。如果不是零,你执行的任何东西都不会顺利运行。返回0的程序标记为干净退出

但是,我一辈子都不明白你为什么要费心执行这样的查询。如果您运行了
mysql
,并且安装了php,为什么不使用
mysqli.*
PDO
?它将为您节省大量的麻烦,并将提高脚本的性能和安全性