2014-06-12 51 views
1

我已經使用PHP在MySQL中使用相同的列字段和關鍵字來關閉項目。當我今天再次使用PhpMyAdmin管理數據庫時,我收到了以下警告消息。使用與表列相同的MySQL關鍵字有哪些風險?

The column name 'order' is a MySQL reserved keyword. 

我的項目仍在使用關鍵字order作爲列名。我的問題是what are the risks or ... when we're using the same keyword of MySQL as table column

+2

不要忘記對列名使用'backticks' – user1978142

+2

風險在於,在SQL查詢中使用它時,忘記用反引號包裝它,並在用戶瀏覽器中顯示SQL錯誤 –

回答

0

在查詢中使用反引號(`)。

實施例:

SELECT * 
FROM TableName 
WHERE `order`='someval' 

旁註:

回到蜱用於表和列標識符,但僅在必要時,所述標識符是MySQL的保留的關鍵字時,或者當該標識符包含空白字符或超出限制集的字符,通常建議避免使用保留關鍵字作爲列或表標識符,以避免引用問題。

返回蜱是必要的,如以下幾種情況:

SELECT id, `my name`, `another field` , `field,with,comma` 
3

風險?您遇到過這種風險:查詢無法運行,因此您必須修復它。

對於大多數關鍵字,關鍵字與標識符仍然生成有效查詢的概率幾乎不存在混淆。當然,你可以想出一些神祕的例子。

修正是爲了逃避標識符。 MySQL使用反引號進行轉義。其他數據庫使用雙引號或方括號。所以,還有另外一個風險:你使用反引號的次數越多,你的代碼便攜性就越差。

對我來說,主要原因是可寫性和可讀性。在我的鍵盤上,反引號鍵位於左上角,我的小小指頭必須遠離它。我發現閱讀結果的代碼更加繁瑣,大量的奧術字符都在浮動。爲了清楚起見,避免轉義標識符。避免使用保留字並只使用字母,數字和下劃線就足夠了。

還有另一個風險。 。 。你會將單引號與反引號混淆。那麼你的查詢可能會有一個常數,你認爲它有一個列值。這種混亂是這個社區最常見的MySQL問題之一。

相關問題