真的很难接受这些该死的语法错误。如果有人能看出这有什么问题,请告诉我:
查询字符串
INSERT INTO Categories (ParentId,Title,Desc) VALUES (?,?,?)
传递数组的Print_R
Array
(
[0] => 1
[1] => Lolcats
[2] => an entire category dedicated to the language, lolcats!
)
错误:
<b>Fatal error</b>: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Desc) VALUES ('1','Lolcats','an entire category dedicated to the language, lolca' at line 1' in /usr/www/maxtingle/Blog/System/Core/Functions.php:168
Stack trace:
#0 /usr/www/maxtingle/Blog/System/Core/Functions.php(168): PDOStatement->execute(Array)
#1 /usr/www/maxtingle/Blog/System/Core/Category.php(12): Functions\Database->Insert('(ParentId,Title...', 3, Array)
#2 /usr/www/maxtingle/Blog/System/Category.php(9): Categories::CreateCategory(Object(CategoryIns))
#3 [internal function]: Category::Create()
#4 /usr/www/maxtingle/Blog/index.php(52): call_user_func_array(Array, Array)
#5 {main}
thrown in <b>/usr/www/maxtingle/Blog/System/Core/Functions.php</b> on line <b>168</b><br>
答案 0 :(得分:4)
Desc
是一个关键字。要将其用作列名,请使用反引号
INSERT INTO Categories (ParentId,Title,`Desc`) VALUES (?,?,?)
答案 1 :(得分:4)
最佳做法是对所有表名和列名使用后退标记,这样您就不会遇到关键字问题。
INSERT INTO `Categories` (`ParentId`,`Title`,`Desc`) VALUES (?,?,?)