2013-08-12 95 views
0

我已经编写了下面的代码,看看客户端是否处于特定状态,如果它具有特定值,则退出。我已经测试了查询和syslog所有传入的变量,以确保它们不是空的,但是,exec命令的返回值是1,$ out是空的。PHP MySQL执行命令不起作用

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语句,任何想法,为什么这个命令不起作用,为什么输出是空的。

回答

1

看那exec功能的签名:

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

$out变量(如果您的命令是正确的),将是一个数组,即使只有1条输出线,它仍然是数组。
要知道您的命令是否成功执行,您必须检查$ret变量的值。如果它不是零的任何东西,你执行的任何东西都不能顺利运行。一个干净的出口被标记为返回0的程序。

虽然我不能为了我的生活理解为什么你会打扰执行这样的查询。如果你有mysql正在运行,并且你安装了php,为什么不使用mysqli_*PDO?它会为你节省很多麻烦,它会提高脚本的性能和安全性。