1

著者、本、主題、出版社などのデータベースがあります。

私のフォームの 1 つで、すべての本の情報を挿入し、情報の 1 つは (データベースからの) どの著者が特定の本を書いたかです。

author テーブルと book テーブルの間に多対多の関係があり、それらの間のテーブルはbook_author. 本のフォームで私が行うことは、select multiplephp で選択した著者 IDbook_authorを本の ISBN とともにテーブルに挿入することです。そのテーブルにはこれ以上情報がないため、主キー)。

問題は、foreach ステートメントがデータベースに 1 回だけ挿入され、多くの作成者 (通常は 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`))
4

1 に答える 1

0

このエラーは、何が問題なのかを示しています。データベースのセットアップのどこかで、外部キー制約を追加しましたが、データを挿入しようとしたときにそれを尊重していません。個人的には、外部キーを削除することをお勧めしますが、他の理由で必要な場合は、実際に制約に注意を払うために挿入を更新する必要があります。

于 2012-06-08T15:25:24.690 に答える