sql >> データベース >  >> RDS >> Mysql

PHP / MySQLは行を挿入し、「id」を取得します

    $link = mysqli_connect('127.0.0.1', 'my_user', 'my_pass', 'my_db');
    mysqli_query($link, "INSERT INTO mytable (1, 2, 3, 'blah')");
    $id = mysqli_insert_id($link);
    

    mysqli_insert_id()を参照してください。

    何をするにしても、「SELECT MAX(id) FROM mytable」を挿入してから実行しないでください。 "。あなたが言うように、それは競合状態であり、必要はありません。mysqli_insert_id() すでにこの機能があります。

    もう1つの方法は、両方のクエリを一度に実行し、MySQLを使用することです。 のLAST_INSERT_ID() メソッド。両方のテーブルが一度に変更されます(PHPはIDを必要としません)。たとえば、次のようになります。

    mysqli_query($link, "INSERT INTO my_user_table ...;
      INSERT INTO my_other_table (`user_id`) VALUES (LAST_INSERT_ID())");
    

    各接続はIDを個別に追跡します(したがって、競合はすでに防止されています)。



    1. クラウドベースのSQLServerパフォーマンスモニタリングについて

    2. PostgreSQLで現在の時刻を取得する方法

    3. 別のSELECTから返された行数でORDERBYを照会する

    4. PostgreSQLで複数の列を更新する方法