Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Foreach未在MySQL的字段中插入_Php_Mysql_Database_Insert_Foreach - Fatal编程技术网

Php Foreach未在MySQL的字段中插入

Php Foreach未在MySQL的字段中插入,php,mysql,database,insert,foreach,Php,Mysql,Database,Insert,Foreach,我有一个关于作者、书籍、主题、出版商等的数据库 在我的一个表格中,我插入了所有的书籍信息,其中一个信息是作者(来自数据库)写了这本书 我在author表和book表之间有一个多对多关系,它们之间的表名为book\u author。我在图书表单中所做的是将从php中的select multiple中选择的作者ID与图书的ISBN一起插入book\u author表中,这样每个带有作者ID组合的图书ISBN在该表中都是唯一的(尽管我没有将该组合设置为主键,因为该表中没有更多信息) 问题是我的fore

我有一个关于作者、书籍、主题、出版商等的数据库

在我的一个表格中,我插入了所有的书籍信息,其中一个信息是作者(来自数据库)写了这本书

我在author表和book表之间有一个多对多关系,它们之间的表名为
book\u author
。我在图书表单中所做的是将从php中的
select multiple
中选择的作者ID与图书的ISBN一起插入
book\u author
表中,这样每个带有作者ID组合的图书ISBN在该表中都是唯一的(尽管我没有将该组合设置为主键,因为该表中没有更多信息)

问题是我的foreach语句只会在数据库中插入一次,而且如果我选择了多个作者(通常超过2个),它根本不会插入任何内容

编辑:作者在
select multiple

我已使用
var\u dump()
进行了检查,并且数组具有正确的ID,例如在选择了两位作者之后:

array(2){[0]=>string(1)“3”[1]=>string(1)“2”}

我甚至检查了每个查询是否正确生成,同一示例:

string(77)“插入图书作者(图书ISBN,作者ID)值('87979695faae','3')”

string(77)“插入图书作者(图书ISBN,作者ID)值('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\u查询($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`))

错误会告诉您出了什么问题:在设置数据库的某个地方,您添加了外键约束,并且在尝试插入数据时不遵守该约束。就个人而言,我建议删除外键,但如果出于其他原因需要,则您需要更新插入,以便真正注意约束.

您没有发现任何错误。执行
mysql\u查询($sqlAuthor)或死亡(mysql\u error());
Is
mysql\u查询()
returning
false
也许?更详细地说,您有一个表“book”。有了外键约束,如果您使用的是尚未插入“books”中的isbn,则无法将数据集插入“book\u author”中是的,我想这就是问题所在,但现在我改变了代码的编译方式,但仍然得到相同的错误,我怎么能让php代码先在book表中插入isbn,然后在book_author表中插入呢?我找到了,我把代码的顺序搞错了,现在可以了。谢谢