[英]What is wrong with this MySQL syntax?
INSERT INTO homework_MarcWed30-2011 ('Teacher', 'Class', 'Period', 'Assn')
VALUES ('a', 'a', 'a', 'a')
我收到以下錯誤:
您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊以獲取在'-2011附近使用的正確語法(Teacher varchar(30),Class varchar(30),Period varchar(30),Assn varchar('在第1行)
到底是怎么回事?
另外,create table語句對我不起作用:
mysql_query("CREATE TABLE homework_MarcWed30-2011 (Teacher varchar(30), Class varchar(30), Period varchar(30), Assn varchar(400))","mysql_connect('#####', '#####', '#####')") OR die(mysql_error());
采用
`homework_MarcWed30-2011`
在表名中,並使用`引用列名
INSERT INTO homework_MarcWed30-2011 (`Teacher`, `Class`, `Period`, `Assn`)
VALUES ('a', 'a', 'a', 'a')
標識符可以帶引號或不帶引號。 如果標識符包含特殊字符或為保留字,則在引用標識符時必須將其引用。 當前字符集中的字母數字字符集“ _”和“ $”並不特殊。
試試這個查詢
INSERT INTO `homework_marcwed30-2011` (`Teacher` ,`Class` ,`Period` ,`Assn`) VALUES ('a', 'a', 'a', 'a');
變體 ,不帶引號
INSERT INTO `homework_marcwed30-2011` (Teacher ,Class ,Period ,Assn)
VALUES ('a', 'a', 'a', 'a')
變化 ,無場限制
INSERT INTO `homework_marcwed30-2011` VALUES ('a', 'a', 'a', 'a')
對於表創建部分
mysql_query("CREATE TABLE `homework_MarcWed30-2011` (Teacher varchar(30) NOT NULL, Class varchar(30) NOT NULL, Period varchar(30) NOT NULL, Assn varchar(400) NOT NULL);","mysql_connect('#####', '#####', '#####')") OR die(mysql_error());
您的錯誤是您沒有定義是否允許Null。
列名應該用引號引起來,它們可以用反引號``括起來,但不能用單引號或雙引號引起來。
INSERT INTO `homework_MarcWed30-2011` (`Teacher`, `Class`, `Period`, `Assn`)
VALUES ('a', 'a', 'a', 'a')
如果在表名中有-,您仍然可以在反引號``周圍使用名字。
首先,我認為表名稱中不能包含“-”。 不確定那一項,但這是基於近乎“ -2011”評論的建議。 (或如上所述,通過反引號將其包圍)...這是更好的選擇!)
其次,第二個將死亡,因為您有一個PHP語法錯誤:
mysql_query(""...", "mysql_connect(...)") OR die(msyql_error());
第一個參數有兩個開頭的引號:表示字符串已開始和結束。 刪除一個。
而且,如果我沒有記錯的話,我相信不用看文檔,第二個參數就需要資源。 您正在發送一個字符串。 嘗試刪除引號。
您不能在表格名稱中使用破折號作為裸字符串。 相反,如果您使用下划線,它將可以正常工作:
mysql> CREATE TABLE homework_MarcWed30_2011 (Teacher varchar(30), Class varchar(30), Period varchar(30), Assn varchar(400));
Query OK, 0 rows affected (0.09 sec)
在插入語句中,您不能在列名中使用引號,並且如果要插入所有列,則根本不需要列出它們:
mysql> INSERT INTO homework_MarcWed30_2011 VALUES ('a', 'a', 'a', 'a');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO homework_MarcWed30_2011 (Teacher, Class, Period, Assn) VALUES ('b', 'b', 'b', 'b')
答案太多而不是一個正確的答案
倒鈎會做魔術
INSERT INTO `homework_MarcWed30-2011` (`Teacher`, `Class`, `Period`, `Assn`)
VALUES ('a', 'a', 'a', 'a')
但是,一般來說,給您的標識符加上一些花哨但又明智的名稱
CREATE TABLE homework (
teacher varchar(30),
class varchar(30),
period varchar(30),
assn text
)
保留字母數字小寫將為您節省許多麻煩
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.