2011-12-01 87 views
1

嘗試使用phpacademy的教程創建博客,當我在mysql中使用php添加類別名稱時遇到了問題在這個視頻https://www.youtube.com/watch?v=JBcXMVjk83Qmysql:使用INSERT INTO ... SET時出現ERROR 1054使用INSERT INTO ... SET來填充表

筆者使用此代碼把分類到分類表的名稱:

function add_category($name) { 
$name = mysql_real_escape_string($name); 

mysql_query("INSERT INTO `categories` VALUES `name` = `{$name}`"); 

}

但它並沒有爲我工作(我使用PHP Version 5.3.3-7和Ver 14.14 Dist進行debian壓縮測試肋骨5.1.49)。

我連接到MySQL和數據庫正確,但是我們在MySQL通過命令行直接嘗試查詢,我有以下錯誤:

ERROR 1054 (42S22): Unknown column 'uncategorized' in 'field list' 

然後我發現,使用這種查詢是工作:

INSERT INTO categories(name)VALUES('uncategorized'); 

,但我想知道是否有使用同樣的方法,用筆者的方式,如果這是比我發現是選擇更好,更安全,更快捷(或什麼那麼)加工。

謝謝!

回答

3

您在這裏用錯報價:

mysql_query("INSERT INTO `categories` VALUES `name` = `{$name}`"); 

使用單引號:

mysql_query("INSERT INTO `categories` VALUES `name` = '{$name}'"); 

單引號幀數據,而反引號`用來標記數據庫元素 - 表,列等

+0

不錯!非常感謝你! INSERT INTO類別SET'name' ='{$ name}''和'INSERT INTO類別(名稱)VALUES('{$ name}')之間在性能,安全性或最佳實踐方面是否存在差異? ? –

+0

安全性和性能沒有差異,但使用'INSERT INTO field_list VALUES(values_list)'通常更方便,因爲您可以自動填充陣列中的列表。但這取決於這個問題。有時'SET'更具可讀性。 – Minras

+0

非常感謝@Minras –

1

你可以這樣做

mysql_query("INSERT INTO categories(name) VALUES('$name')");