【问题标题】:PDO Uncaught exception - Insert value list does not match column listPDO 未捕获异常 - 插入值列表与列列表不匹配
【发布时间】:2013-01-23 07:30:04
【问题描述】:

我得到这个异常

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

错误信息是什么意思?

【问题讨论】:

  • 您从INSERT 中省略了列列表,这意味着VALUES() 列表必须与列完全匹配。永远不要省略列列表 - 始终是明确的。 INSERT INTO project (category, title, name) VALUES (:category, :title, :name)
  • 向我们展示您的project 表的 SQL 创建语句。

标签: php exception pdo


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    您尚未列出要插入的列。

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

    【讨论】:

      【解决方案3】:
      INSERT INTO project(category_field,title_field,name_field) VALUES(:category, :title, :name)
      

      category_field,title_field,name_field 是project 表中的列

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-25
        • 1970-01-01
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多