Я создаю базу данных фильмов для школьного проекта, и я пытаюсь добавить 2 значения к отношениям «многие ко многим» в sqlite. Однако по какой-то причине второй запрос не возвращает первичный ключ только что добавленного фильма, а всегда 1. Я протестировал запросы с помощью sql, а затем они вернули значения, как обычно, поэтому я не думаю, что что-то не так с sql запросы.
public function add_movie($title, $genre, $actor, $director, $agecategory, $warning){
$query1 = $this->db->prepare(
"INSERT INTO movie
(title, agecategorynumber) VALUES (?,?);"
);
$query1->bindValue(1, $title);
$query1->bindValue(2, $agecategory);
try{
$query1->execute();
}catch(PDOException $e){
die($e->getMessage());
}
$query2 = $this->db->prepare(
"SELECT movie.movienumber
FROM movie
WHERE movie.title LIKE ?"
);
$query2->bindValue(1, $title);
try{
$titlenumber = $query2->execute();
}catch(PDOException $e){
die($e->getMessage());
}
$query3 = $this->db->prepare(
"INSERT INTO movieactor
(movienumber, actornumber) VALUES (?,?);"
);
$query3->bindValue(1,$titlenumber);
$query3->bindValue(2,$actor);
try{
$query3->execute();
}catch(PDOException $e){
die($e->getMessage());
}
}
@CBroe ваша ссылка предназначена для Java / JDBC, а этот вопрос - для PHP.
@timclutton в одном из ответов упоминается last_insert_rowid(). Дубликат не должен означать для меня «копировать и вставить готовый ответ», ИМХО, можно ожидать разумных усилий по поиску соответствующей информации. (В частности, в таком случае только с двумя, довольно короткими и лаконичными ответами. Я бы согласился с вашей точкой зрения, если бы это был один из вопросов, на которые были даны десятки ответов, и все они уже говорили о разных вещах.)
@CBroe Согласен. В данном случае это немного вводит в заблуждение, поскольку PDO предоставляет для этого собственный метод: PDO :: lastInsertId.






Если вы хотите, чтобы идентификатор автоматически увеличивался для последней вставленной записи, не пытайтесь вздыхать, как показано выше, а сделайте это способом верно. stackoverflow.com/questions/216790/…