0

I'm working on this page where other users are added, when I want to insert a new user, this is what comes up:

 Fatal error: 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' in /Applications/XAMPP/xamppfiles/htdocs/app/classes/class.users.php:96 Stack trace: #0 

/Applications/XAMPP/xamppfiles/htdocs/app/classes/class.users.php(96): PDO->prepare('INSERT INTO use...') #1 

/Applications/XAMPP/xamppfiles/htdocs/public/pages/nieuweklant.tpl(4): DeGier\Core\Users::addCus() #2 

/Applications/XAMPP/xamppfiles/htdocs/app/classes/class.template.php(20): include('/Applications/X...') #3 

/Applications/XAMPP/xamppfiles/htdocs/app/classes/class.template.php(48): DeGier\Core\Template::getPage('nieuweklant') #4 

/Applications/XAMPP/xamppfiles/htdocs/index.php(11): DeGier\Core\Template::render('nieuweklant') #5 {main} 

thrown in /Applications/XAMPP/xamppfiles/htdocs/app/classes/class.users.php on line 96

Normally, this pops up when I've missed a comma somewhere in the prepare statement, or if the statement isn't corresponding to my DB table, but this time, I believe that none of that has happened.

This is the PDO Statement:

    $q = self::$connection->prepare('INSERT INTO users VALUES ("", 

:fname, :lname,

 :company, :telephone, :email, :adress, :zipcode, 

    :country, :note)');


    $q->execute(array(":fname" => $_POST['voornaam'], ":lname" => 

$_POST['achternaam'], ":company" => $_POST['bedrijf'],  ":telephone" => 

$_POST['telefoon'], ":email" => $_POST['email'], ":adress" => 

$_POST['adres'], ":zipcode" => $_POST['postcode'], ":country" => 

$_POST['land'], ":note" => $_POST['aantekening']));

I don't believe there's anything wrong there.

Here is my DB table:

TABLE

Again, I believe it all matches up.

So, how is it possible that such a big error comes up for none of the default reasons?

Thanks.

sushibrain
  • 2,712
  • 5
  • 33
  • 62
  • 1
    Does the id is AUTO_INCREMENT ? if yes, why you even add the first value as empty one ? – Ido Apr 24 '15 at 23:08
  • just learned that some MySQL servers have [`ANSI_QUOTES`](http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_ansi_quotes) mode on. see http://stackoverflow.com/a/29834017/689579 Not sure if this is your issue, but try swapping your quotes -> `"INSERT INTO users VALUES ( '', .....)"`. – Sean Apr 24 '15 at 23:53

1 Answers1

0

You could try writing in the columns that you wish to insert to. Since your ID is AUTO INCREMENT, it might go wrong when you try to insert an empty string to that field.

   $q = self::$connection->prepare('INSERT INTO users (firstname, lastname, company, phone, email, adress, zipcode, country, note) VALUES ("", 

:fname, :lname,

 :company, :telephone, :email, :adress, :zipcode, 

    :country, :note)');


    $q->execute(array(":fname" => $_POST['voornaam'], ":lname" => 

$_POST['achternaam'], ":company" => $_POST['bedrijf'],  ":telephone" => 

$_POST['telefoon'], ":email" => $_POST['email'], ":adress" => 

$_POST['adres'], ":zipcode" => $_POST['postcode'], ":country" => 

$_POST['land'], ":note" => $_POST['aantekening']));
Jonas R.
  • 28
  • 7