PHP MySQL exec命令无法正常工作

时间:2013-08-12 09:56:20

标签: 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 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 个答案:

答案 0 :(得分:1)

查看exec函数的签名:

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

$out变量(如果你的命令是正确的)将是一个数组,即使只有1个输出行,它仍然是一个数组。
要知道您的命令是否成功执行,您必须检查$ret变量的值。如果它不是零,那么无论你执行什么都没有顺利进行。一个干净的出口由程序返回0标记。

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