2012-12-25 34 views
3

可能重複:
MySQL - when to use single quotes, double quotes, and backticks?MySQL查詢行情,這樣的

問題1

爲什麼這項工作?

"SELECT `id` FROM `table` WHERE x= '".$y."'" 

但不是這樣嗎?

"SELECT `id` FROM `table` WHERE 'x' = '".$y."'" 
           ^^ 
           Notice the extra single quotes 

問題2 是更好地做ID`id`(與怪異引號)? 還是因爲雙引號使其解釋爲變量?

+0

什麼是真正需要的是一些[適當的SQL逃逸(http://bobby-tables.com/php)。您應該從不**將用戶數據直接插入到查詢中。使用佔位符或可能會造成嚴重後果。 – tadman

+0

感謝您的建議:) – Wulf

回答

6

因爲服務器將x讀取爲值,因爲它與single quote包裝在一起。 backtick轉義查詢中使用的保留關鍵字,通常用於包圍列名表名

在查詢

SELECT `id` FROM `table` WHERE 'x' = '$y' 

x不是列而是一個字符串值。

問題2,您可以消除周圍id那些反引號,因爲它不是一個Reserved Keyword,這裏是保留關鍵字在MySQL

的完整列表,作爲一個旁註中,查詢很容易受到SQL Injection的影響。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements,你可以擺脫圍繞值使用單引號。

+0

非常感謝您 – Wulf

+1

不客氣! ':D' –