1

真的在与这些该死的语法错误作斗争。如果有人能看出这有什么问题,请告诉我:

请求参数

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-&gt;execute(Array)
#1 /usr/www/maxtingle/Blog/System/Core/Category.php(12): Functions\Database-&gt;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>
4

2 回答 2

4

Desc是一个关键字。要将其用作列名,请使用反引号

INSERT INTO Categories (ParentId,Title,`Desc`) VALUES (?,?,?)
于 2013-07-07T02:24:02.257 回答
4

最佳做法是对所有表名和列名使用反引号,这样您就永远不会遇到关键字问题。

INSERT INTO `Categories` (`ParentId`,`Title`,`Desc`) VALUES (?,?,?)
于 2013-07-07T02:32:32.443 回答