我有一个包含作者、书籍、主题、出版商等的数据库。
在我的一个表格中,我插入了所有书籍信息,其中一个信息是哪些作者(来自数据库)编写了特定的书籍。
我在 author 表和 book 表之间有一个多对多的关系,它们之间的表名为book_author
。我在书本表单中所做的是将从select multiple
php 中选择的作者 IDbook_author
与书的 ISBN 一起插入表中,因此每个带有 author_ID 组合的 book_ISBN 在该表中都是唯一的(即使我没有将组合设置为主键,因为我在该表中没有更多信息)。
问题是我的 foreach 语句只会在数据库中插入一次,而且如果我选择了许多作者(通常超过 2 个),它根本不会插入任何东西。
编辑:作者在select multiple
我已经检查过var_dump()
并且该数组具有正确的 ID,例如在选择 2 个作者后:
array(2) { [0]=> string(1) "3" [1]=> string(1) "2" }
我什至检查了每个查询是否正确生成,同样的例子:
string(77) "INSERT INTO book_author (book_ISBN, author_ID) VALUES ('87979695faae','3')"
string(77) "INSERT INTO book_author (book_ISBN, author_ID) VALUES ('87979695faae','2')"
但是问题仍然存在,我不知道该怎么做,这是我的代码:
if (!isset($_POST["authors"])){
header("Location: addBook.php");
exit;
}
var_dump($_POST["authors"]);
$authors = $_POST["authors"];
foreach ($authors as $author)
{
$sqlAuthor = "INSERT INTO book_author (book_ISBN, author_ID)
VALUES ('$isbn','$author')";
var_dump($sqlAuthor);
mysql_query($sqlAuthor);
}
我的怀疑是这个mysql_query($sqlAuthor);
,但我不确定......
编辑:我die
按照指示使用了该功能,这是我得到的错误
Cannot add or update a child row: a foreign key constraint fails (`library`.`book_author`, CONSTRAINT `FK_written1` FOREIGN KEY (`book_ISBN`) REFERENCES `book` (`book_ISBN`))