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