2013-07-08 15 views
0

我想在php中查詢MySql數據庫表以確定是否存在條目。如果它確實存在,我想知道它的ID,所以我可以在另一個表中將它用作外鍵。如果它不存在,我想添加新條目並查詢其自動增加的ID以用作外鍵。mysqli_fetch_assoc()帶有nul查詢結果的結果

首先,我執行一個mysqli_query命令並將句柄分配給$ query。

如果該項不存在,則該命令

$result = mysqli_fetch_assoc($query)['id']; 

返回NUL。然而,當我測試,使用:

if ($result = "") 
{ 
//commands 
} 

if語句不執行,因爲如果測試返回false。我在這裏做錯了什麼,還是有更好的方法來完成我期待的結果?

+0

。檢查mysqli_error的值的原因。我敢打賭你的查詢中有一個語法錯誤。 – 2013-07-08 03:58:53

+0

使用var_dump()檢查'mysqli_fetch_assoc($ query)'返回的是什麼' – zerkms

回答

0

除非您運行PHP 5.5,否則不能使用從函數/方法調用返回的數組並立即對其進行解引用。嘗試使用標準的pre-5.5語法:

$result = mysql_fetch_assoc($query); 
if ($result['id']) { 
    ... 
} 

改爲。另外請注意,您的示例if()命令是錯誤的。一個=確實分配,不是一個平等測試。你可能想要

if ($result == "") 
      ^^---note, 2 ='s 

改爲。

0

在if查詢中使用'=='而不是'='。而且比較應該是FALSE,而不是''。要絕對肯定的是,你可以使用嚴格比較「===」

if($result === FALSE) 

我不同意其中$結果[「ID」]被立即mysql_fetch_assoc調用後引用的上述答案的一部分;該代碼不檢查mysql_fetch_assoc是否確實返回了一個數組,並且它會生成一個PHP通知。

如果您的查詢返回false它已經失敗我會寫爲

$result = mysql_fetch_assoc($query); 
if ($result === FALSE) { 
    // no result 
}else{ 
    $id = $result['id']; 
}