2012-03-26 48 views
1

我真的不知道這是什麼問題。我曾經寫過完全相同的東西,並使其工作。mysql_query SELECT給我帶來麻煩

$check = mysql_query("SELECT encrypt FROM database WHERE word='$word'") or die(mysql_error()); 

返回的錯誤是:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的「數據庫,在那裏字=」在行1

+1

什麼是$字的價值? $ word = mysql_real_escape($ word); – safarov 2012-03-26 06:11:14

+1

您是否嘗試使用反引號進行轉義? – Andy 2012-03-26 06:11:44

+0

是數據庫關鍵詞嗎? – 2012-03-26 06:12:26

回答

9

DATABASE asdaasdasdd「」是一個mysql reserved word正確的語法手冊,用反引號``E關閉它

$check = mysql_query("SELECT encrypt FROM `database` WHERE word='$word'") 
        or die(mysql_error()); 
+0

感謝您的快速幫助好友。這解決了它。據我所知,數據庫是一個保留字。 – Kishor 2012-03-26 06:16:56

+0

@Phil - 是的,只要SO允許我。再過5分鐘。 – Kishor 2012-03-26 06:19:25

3

嘗試反引號database。這可能是一個保留字。

+0

「數據庫」不是*可能是保留字 – Phil 2012-03-26 06:15:20

+0

完成。解決了麻煩。 – Kishor 2012-03-26 06:17:49

-1

加密是一個函數,所以即使這不會導致問題,我也會避免將它用作列名。

1

的或死亡()的技巧是有幾個原因非常糟糕的選擇:

  • 這不是一個錯誤信息來呈現用戶一個非常好的方式。

  • 利用比如mysql_error()的調用它,因爲許多人一樣,暴露了不應該在生產環境中

  • 你抓不到錯誤以任何方式獲取輸出信息。

  • 您無法記錄該錯誤。

  • 您無法控制它是否應輸出到屏幕上。在開發環境中這樣做可以,但肯定不是在生產環境中。

  • 它阻止你做任何形式的清理。它只是突然結束腳本。

一個簡單的方法來實現的:

$result = mysql_query('SELECT foo FROM bar', $db) or trigger_error('Query failed: ' . mysql_error($db), E_USER_ERROR); 
+1

點採取好友。 – Kishor 2012-03-26 06:41:15