PDO未捕获异常 - 插入值列表与列列表不匹配

时间:2013-02-07 17:26:32

标签: php exception pdo

我得到了这个例外

Uncaught exception 'PDOException' with message 'SQLSTATE[21S01]: 
Insert value list does not match column list: 1136 Column count doesn't match 
value count at row 1

使用此代码:

$stmt = $conn->prepare('INSERT INTO project VALUES(:category, :title, :name)');
      $stmt->execute(array(
          ':category' => $_POST['category'],
          ':title' => $_POST['title'],
          ':name' => $_POST['name']
));

错误消息是什么意思?

3 个答案:

答案 0 :(得分:7)

在查询中,指定要填充的列,例如:

$stmt = $conn->prepare('INSERT INTO project (category, title, name) VALUES(:category, :title, :name)');

如果不以这种方式指定列,则必须为表中的所有列包含一个值,这就是您收到错误的原因 - 因为表中还有其他列而您没有明确地为它们指定了一个值。

最好指定列,因为如果添加了任何列或将来更改了顺序,除非指定了列列表,否则查询将会中断。

答案 1 :(得分:3)

INSERT INTO project(category_field,title_field,name_field) VALUES(:category, :title, :name)

category_field,title_field,name_field是project

中的列

您必须指定要在哪个列中插入数据。

注意:当然如果不需要其他字段值(未设置为NOT NULL)

答案 2 :(得分:2)

您没有列出要插入的列。

INSERT INTO project (category, title, name) VALUES (:category, :title, :name)