2017-05-31 17 views
-1

私は2つのテーブル 'X'と 'Y'を持っています。 Xの主キーはMySQL(auto_increment)によって自動生成されます。 Xの主キーはYの外部キーです。同じフォームを使用して両方のテーブルの値を取得し、同じPHPファイルを使用してテーブルに値を挿入します。最初にテーブルXに値を挿入し、$id = mysqli_insert_id($db);を使用して自動生成ID(プライマリキー)を取得し、テーブルYに値を挿入するために$ idを使用します。 私の質問はです。テーブルXのIDが間違っています。php - mysql:フォーム処理:主キーの自動生成

+0

質問に沿って試したソリューションを添付することをお勧めします。尋ねる前に実際に行ったことを確認することができます。今の質問はこの投稿の主題としてかなり混乱しており、あなたが知りたいと思うのは2つの異なることです。 –

+0

両方のインサートを同じトランザクション内にラップすると問題はありません。 – ADyson

答えて

0

MySqlのlast_insert_id()関数のドキュメントによると、最後の挿入IDは接続ごとに格納されるため、完全に安全ですテーブルXのIDが以前のINSERTステートメントに挿入されているものと仮定します。 https://dev.mysql.com/doc/refman/5.7/en/getting-unique-id.htmlで彼らの文書を引用する

LAST_INSERT_IDについては()、最も最近生成されたIDは、接続ごとにサーバーに保持されています。別のクライアントによって変更されることはありません。別のAUTO_INCREMENT列を非魔法の値(NULLではなく0でない値)で更新すると、変更されません。 LAST_INSERT_ID()およびAUTO_INCREMENT列を複数のクライアントから同時に使用することは完全に有効です。各クライアントは、クライアントが最後に実行したステートメントの最後に挿入されたIDを受け取ります。