1

我得到这个异常

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']
));

错误信息是什么意思?

4

3 回答 3

9

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

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

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

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

于 2013-02-07T17:29:47.150 回答
3
INSERT INTO project(category_field,title_field,name_field) VALUES(:category, :title, :name)

其中 category_field,title_field,name_field 是表中的project

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

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

于 2013-02-07T17:28:14.643 回答
2

您尚未列出要插入的列。

IE

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

于 2013-02-07T17:29:29.323 回答