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

挿入する列をリストしていません。

すなわち

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

于 2013-02-07T17:29:29.323 に答える