2013-02-09 58 views
-1

如果$key不是數據庫的key_code列中的值,那麼這並不像我預期的那樣死亡。相反,它只是繼續。我可能錯過了一些非常簡單的事情。mysql查詢在不應該出現時返回true

$key = $_GET['k']; 

$keycheck = mysql_query("SELECT * FROM ib_dist WHERE key_code = '$key'"); 

if (!$keycheck) { 

    die("A database error has occured."); 

} else { 
+3

這不是'mysql_query()'的實際工作方式。請參閱手冊:http://php.net/mysql_query – 2013-02-09 12:36:29

+0

最瘋狂的代碼。你想知道什麼?如果查詢失敗或成功,這將返回! – 2013-02-09 12:37:09

回答

0

嘗試檢查找到的行數。

$key = $_GET['k']; 

$result = mysql_query("SELECT * FROM ib_dist WHERE key_code = '$key'"); 

if (!$result) { 

    die("A database error has occured."); 

} else if (0 == mysql_num_rows($result)) { 
    // unknown key action 
} else { 
    // known key action 
} 
+0

謝謝..我累了,忘了檢查結果大聲笑 – Gary 2013-02-09 12:43:34

2

mysql_query返回基於查詢是否成功運行資源或false。它不以任何方式表示返回了多少行,或者查詢是否執行了任何操作,僅表示它是否成功執行。

檢查單獨返回或評估返回結果的結果數。

+1

不,如果查詢失敗,'mysql_query()'返回false,如果查詢成功執行,則返回資源。它從不返回布爾值true。 – Arjan 2013-02-09 12:42:53

+0

哎呀,很好。 – deceze 2013-02-09 12:44:07

+0

@Arjan它可以返回'true':對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等,mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。 – 2014-07-14 14:29:39