2014-03-03 72 views
0

我需要一些幫助mysqli_query返回false,而不是價值

我希望我的腳本來運行,如果mysqli_query返回關 我設定的ID值= 1至關

但我的腳本不運行。但如果我更換,如果關閉與假它工作正常。

什麼可能是錯的?

$query3=mysqli_query($con,"SELECT * FROM choice WHERE id=1"); 
$query4=mysqli_fetch_array($query3); 
if ($query4['choice'] == off) { 
    $output = shell_exec('sudo python test1.py'); 
+2

false表示查詢失敗,並且您的代碼沒有檢查失敗。所以它提前發生無效數據。同樣,「關」是一個常數。是這樣定義的嗎?或者它應該是一個「關閉」字符串? –

+0

@Anchovy傳說:再看一遍。這是mysqli。 –

+0

除非'off'是一個常數,否則它應該是'$ off'。另外,如果'off'不是一個變量/常量,並且您正在嘗試檢查字符串是否相等,則應該使用'strcmp'函數。 – AnchovyLegend

回答

-1

假設這是不是一個MySQL的問題,試試這個:

if (strcmp($query4['choice'], 'off') == 0) { 
    $output = shell_exec('sudo python test1.py'); 
} 

甚至:

if ($query4['choice'] === 'off') { 
    $output = shell_exec('sudo python test1.py'); 
} 

在第一個例子,我們是在比較平等的字符串,如果零返回,沒有區別,這意味着字符串在各方面都是相同的。

在第二個例子中,我們檢查三重等號===的類型,所以它也會正確比較字符串和字符串。

+0

爲什麼你會在這裏使用'strcmp'而不是== ==? – tadman

+0

請參閱編輯的回覆。 – AnchovyLegend

+0

我認爲你在這裏吠叫完全錯誤的樹,除非你可以用完全令人費解的'strcmp'調用或無意義的'==='比較來解釋你的意圖。 – tadman

相關問題