3

PHP での作業と MYSQLI の使用。複数の値を持つ単一の挿入クエリから挿入されたすべての行の insert_id を取得しようとしています。効率化のため、1 回の呼び出しにまとめます。私の実際のコードには、1 つの挿入クエリに数百の値があります。ただし、値が 4 つのみの挿入のサンプル コードを次に示します。

$sql = "INSERT INTO link_tags ( string_names_id, urls_id ) 
    VALUES ( '2', '17' ), ( '8', '31' ), ( '8', '1' ), ( '8', '4' )";

$mysqli->query($sql);

echo "id's: " .$mysqli->insert_id;

上記のコードは挿入を実現しますが、呼び出しからの最初の挿入の ID のみを提供します。この単一のクエリのすべての ID を取得するにはどうすればよいですか?

4

3 に答える 3

4

ステートメントは 1 つのトランザクションで実行されるため、ID は mysql_insert_id + 次の 3 つ (任意) の連続であると想定しても安全です。

于 2013-03-27T16:32:23.917 に答える
1

いいえ、これは MySQL では不可能です。

LAST_INSERT_ID()AUTO_INCREMENT 列に正常に挿入された最初の自動生成値を表す BIGINT (64 ビット) 値を返すため、実際に使用するのは簡単ではありません。

この値 + データ リストの長さが ID になると推測できますが、これが常に真であるという絶対的な保証はありません。

于 2013-03-27T16:33:22.853 に答える