2012-09-30 43 views
3

據我所知,反引號並不是必需的,例如查詢中的表名:(「INSERT INTO table_name ....」)。另外,就我所知,下劃線在名稱中使用是完全可以接受的語法:foo_bar。我的問題則,爲什麼這個查詢失敗:爲什麼我必須在我的MySQL查詢中使用反引號?

mysql_query("INSERT INTO quick_links WHERE ...etc"); 

在此查詢的工作完美:

mysql_query("INSERT INTO `quick_links` WHERE ...etc"); 

是「快速」或「鏈接」保留字???我不這麼認爲,但是再次,我對MySQL相當陌生,所以我很抱歉。另外,在某些「存儲引擎」中使用反引號(在術語中引用phpMyAdmin)?如果這有什麼不同,我碰巧使用「InnoDB」。

感謝您的回答,我是MySQL新手,我喜歡確保我瞭解這些細微差別。

我的完整的查詢是這樣的:通過$ _ POST獲得

mysql_query("INSERT INTO `quick_links` VALUES (
    '$user_id', '$ql_name', '$ql_url', '$ql_img' 
)"); 

$ ql_url和$ ql_name,然後在查詢中使用前用裝飾和mysql_real_escape_string消毒。 $ ql_img只是一個指向上傳縮略圖的目錄的url,$ user_id用於標識登錄的特定用戶。兩個查詢完全一樣,字面意思是,除了附近的反引號外TABLE_NAME。

+0

你能顯示整個查詢嗎? –

+0

[由於在MySQL中使用保留字作爲表或列名稱而導致的語法錯誤]的可能重複(http://stackoverflow.com/questions/23446377/syntax-error-due-to-using-a-reserved-word -as-a-table-or-column-name-in-mysql) –

回答

7

BACKTICK僅用於逃避MySQL Reserved words。如果不使用任何保留關鍵字,它們是可選的,前提條件是使用的tableNames或columnNames具有no spaces

This page指示模式中允許使用的字符。

+0

+1用於分享良好的知識 –

+3

想一想你創建一個名爲「有空格」的表有多嚴重 –

+0

我們是否需要在PostgreSQL中使用它們也? –

相關問題