插入语句上的PDO错误42000

时间:2014-05-08 23:28:18

标签: php mysql pdo

嗨我有以下代码吗?我有另一个声明可以使用,但它是另一个表而没有project_id列。

(
    [0] => 42000
    [1] => 1064
    [2] => 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 'change (title, description, project_id) VALUES ('Test1', 'Test1', '1')' at line 1
)

$sql = "INSERT INTO change (title, description, project_id) VALUES (:title, :description, :project_id)";
$query = $db->prepare($sql);
$query->execute(array(":title" => $title,
        ":description" => $description,
        ":project_id" => $row_id));

$arr = $query->errorInfo();
print_r($arr);

我哪里出错?

2 个答案:

答案 0 :(得分:2)

始终将表格和字段名称封装在反引号中:

INSERT INTO `change` (`title`, `description`, `project_id`) VALUES (:title, :description, :project_id)

在这种情况下:CHANGE是MySQL中的关键字,因此您的语句不会将其解释为表名。

答案 1 :(得分:0)

制作表时,请务必在此处查看mysql

中的保留关键字

您的表名是保留关键字,这就是您遇到这些错误的原因。

使用反引号来解决问题。但我会建议您更改表名。

如果使用正常的qwerty或azerty键盘,有时人们发现很难找到反引号,它会高于你的tab键。