PDOStatement::execute(): SQLSTATE[HY093]: недопустимый номер параметра: параметр не был определен в add_product.php в строке 29

Извините, очень плохо знакомы с PHP и MySQL.

Вот код, на который ссылается ошибка.

$query = 'INSERT INTO movies
            (title, year, actor, notes, category)
          VALUES
            (:code, :name, :price, :notes, :category_id)';
$statement = $db->prepare($query);
$statement->bindValue(':title', $code);
$statement->bindValue(':year', $name);
$statement->bindValue(':actor', $price);
$statement->bindValue(':notes', $notes);
$statement->bindValue(':category', $category_id);
$statement->execute();
$statement->closeCursor();

Ошибка ссылается на execute(); Заявление Любая помощь будет здорово.

1 ответ

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

$query = 'INSERT INTO
            movies(title, year, actor, notes, category)
          VALUES 
            (:code, :name, :price, :notes, :category_id)';

$statement = $db->prepare($query);
$statement->bindValue(':code', $code); // see the changes here 
$statement->bindValue(':name', $name); // see the changes here 
$statement->bindValue(':price', $price); // see the changes here 
$statement->bindValue(':notes', $notes);// see the changes here  
$statement->bindValue(':category_id', $category_id); // see the changes here 
$statement->execute();
$statement->closeCursor();

PDOStatement:: bindValue - привязывает значение к параметру.

параметр

Идентификатор параметра. Для подготовленного оператора, использующего именованные заполнители, это будет имя параметра в форме: имя. Для подготовленного утверждения, использующего заполнители с вопросительным знаком, это будет позиция индекса с 1 индексом.

значение

Значение для привязки к параметру.

Но в вашем случае вы использовали разные имена при использовании bindValue(), Подробнее http://php.net/manual/en/pdostatement.bindvalue.php

Другие вопросы по тегам