2013-08-12 92 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?它會爲你節省很多麻煩,它會提高腳本的性能和安全性。