Ошибка PDO при вставке

Я знаю, что источник моей проблемы должен быть где-то в моем утверждении, но я просто не могу найти его. Может быть, у тебя сейчас лучший глаз, чем у меня.

Я получаю следующую ошибку при попытке вставить строку в мою таблицу:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

Вот моя функция вставки:

private function _insert()
{
$sql = 'INSERT INTO shows (
thetvdb_id,
name,
imdb_id,
language,
overview,
genre,
lastupdated,
status
)' .
' VALUES (
:thetvdb_id,
:name,
:imdb_id,
:language,
:overview,
:genre,
:lastupdated,
:status
)';
$abfrage = self::$db->prepare($sql);
$abfrage->execute($this->toArray(false));
//Setze die ID auf den von der DB generierten Wert
$this->id = self::$db->lastInsertId();
}

И вот образец объекта я передаю:

object(Show)#201 (9) {
["id":"Show":private]=>
int(0)
["thetvdb_id":"Show":private]=>
string(5) "74875"["name":"Show":private]=>
string(10) "The Closer"["imdb_id":"Show":private]=>
string(9) "tt0458253"["language":"Show":private]=>
string(2) "en"["overview":"Show":private]=>
string(358) "Deputy Police Chief Brenda Leigh Johnson (Kyra Sedgwick) is a police detective who transfers from Atlanta to Los Angeles to head up a special unit of the LAPD that handles sensitive, high-profile murder cases. Despite a tendency to step on people\'s toes, Johnson manages to convert even her strongest adversaries with her unique ability to get to the truth."["genre":"Show":private]=>
string(21) "|Crime|Drama|Mystery|"["lastupdated":"Show":private]=>
string(10) "1410004625"["status":"Show":private]=>
string(5) "Ended"}

1

Решение

У вас есть 8 переменных в запросе SQL:

        :thetvdb_id,
:name,
:imdb_id,
:language,
:overview,
:genre,
:lastupdated,
:status

И 9 переменных в вашем массиве / объекте.

2

Другие решения

вы отправляете в 9 параметрах (дополнительный идентификатор), и это не разрешено, проверьте:
http://php.net/manual/en/pdostatement.execute.php

в частности:

input_parameters …. Вы не можете связать больше значений, чем указано; если
в input_parameters существует больше ключей, чем в SQL, указанном в
PDO :: prepare (), тогда оператор потерпит неудачу и выдаст ошибку.

1

По вопросам рекламы [email protected]