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

1 php pdo exception

我得到了这个例外

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
Run Code Online (Sandbox Code Playgroud)

使用此代码:

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

错误消息是什么意思?

MrC*_*ode 8

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

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

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

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