user1763295
user1763295

Reputation: 1098

Php PDO Mysql error 1064 inserting

Really struggling with these damn syntax errors. If anyone can see what's wrong with this please tell me:

Query string

INSERT INTO Categories (ParentId,Title,Desc) VALUES (?,?,?)

Print_R of array passed

Array
(
    [0] => 1
    [1] => Lolcats
    [2] => an entire category dedicated to the language, lolcats!
)

Error:

<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>

Upvotes: 1

Views: 395

Answers (2)

kmoney12
kmoney12

Reputation: 4490

The best practice is to use back ticks for all table names and column names so you will never run into keyword issues.

INSERT INTO `Categories` (`ParentId`,`Title`,`Desc`) VALUES (?,?,?)

Upvotes: 4

RiaD
RiaD

Reputation: 47620

Desc is a keyword.To use it as column name use backticks

INSERT INTO Categories (ParentId,Title,`Desc`) VALUES (?,?,?)

Upvotes: 4

Related Questions