1

私はphpで実行しようとしている2つのクエリを持っています。ただし、エラーが発生します。最初のクエリの最初の ID は auto inc で、2 番目のクエリの 2 番目の ID は auto inc ではありませんが、外部キーを介して最初の ID に接続されています。クエリの実行時に、両方の同じ ID を取得したいと考えています。ただし、このエラーがポップアップします。

#1452 - 子行を追加または更新できません: 外部キー制約が失敗します ( eangele. relationships, CONSTRAINT relationships_ibfk_3 FOREIGN KEY ( id) REFERENCES nodes( id) ON DELETE NO ACTION ON UPDATE NO ACTION)

$query = "insert into nodes(id,name,color,type,thumb)".
"values('','$nodename','#EBB056','star','$thumbFile')";
$result = $db -> Execute($query);
$querytwo = "insert into relationships(id,goingto,data)".
"values(LAST_INSERT_ID(),'$category','')";
$resulttwo = $db -> Execute($querytwo);
4

1 に答える 1

2

'LAST_INSERT_ID()'リテラル文字列です。アポストロフィーなしでただのように使いたいですvalues(LAST_INSERT_ID(),

それが機能しない場合は、使用している MySQL API に対応する php 関数を使用して、最後の挿入 ID を取得できます。また、 で使用されているのを見たことがありSELECTます。そのように動作するとVALUES思いますが、そうでない場合は、いつでも挿入/選択を行うことができます:

INSERT INTO relationships(id, goingto, data)
SELECT LAST_INSERT_ID(), ?, ''

クエリはインジェクションに対して脆弱です。それらをパラメータ化する必要があります。

于 2013-03-15T03:37:33.650 に答える