简体   繁体   中英

PDO Uncaught exception - Insert value list does not match column list

I get this 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

With this code:

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

What does the error message mean?

In your query, specify the columns that you want to populate, for example:

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

If you don't specify the columns in that way, you have to include a value for all columns in the table, that's why you're getting the error - because there are other columns in the table and you haven't explicitly specified a value for them all.

It is better to specify the columns because if any columns are added or the order is changed in future, your query will break unless the column list is specified.

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

Where category_field,title_field,name_field are columns in your project table

You have to specify in which column you're trying to insert data.

Note: Of course if other field values isn't required (not set to NOT NULL)

You've not listed the columns to insert against.

ie

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM