最後に挿入された行を取得して他のテーブルに関連付ける
複数のテーブルにデータを挿入する場合、多くの場合、挿入されたレコードを別のテーブルに関連付ける必要があります。そのIDを使用してテーブルを作成します。このような場合、最後に挿入された行の ID を取得することが重要になります。ただし、$mysqli->insert_id を直接使用すると、間違った結果が生じる可能性があります。
解決策:
最後に挿入された ID を正しく取得するには、mysqli_insert_id を使用する必要があります。 () 関数。この関数は、現在のデータベース接続に挿入された最後の行の ID を提供します。以下の修正されたコードは、その使用法を示しています。
<br>$stmt = $mysqli->prepare("<br> INSERT INTO table1 (username, firstname, lastname, image) <br> SELECT ?,?,?,image FROM table2 t2 WHERE ユーザー名 = ?<br>");<br>$stmt->bind_param('ssss', $username, $fname, $lname, $username);<br>$stmt->execute();</p> <p>$last_id = mysqli_insert_id($conn); // 最後に挿入された ID を取得します</p> <p>// 取得した ID を使用して table1 の image 列を更新します<br>$stmt2 = $mysqli->prepare("<br> UPDATE table1 SET image = ? WHERE id = ?<br>");<br>$stmt2->bind_param('si', $image, $last_id);<br>$stmt2->execute();<br>
注: table2 の ID フィールドがAUTO_INCREMENT 属性を使用して、挿入された行ごとに一意の ID 値を生成します。
以上が複数テーブルの関連付けのために MySQL で最後に挿入された行 ID を確実に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。