ユーザーテーブルに行を挿入して、新しいユーザーを登録します。 user_idフィールド(これは自動インクリメント)を取得し、別のクエリでそれを使用したいと思います。ここでは解決策が提供されています: How to get the ID of INSERTed row in mysql?しかし、私は新しい行を挿入した直後に別のユーザーが登録され、私のPHPコードでmysql_insert_id()関数を実行する前に何が起こるのだろうかと思います。関数は何を返しますか?挿入された行のIDを取得
答えて
mysql_insert_id()
は、現在の接続(ユーザーセッションに固有)に固有のIDであるauto_increment
を返します。したがって、その種の競合状態からは安全です。言い換えれば、挿入が重複している2人の同時接続ユーザーは、干渉なしで常に自分のセッションの正しいIDを返すでしょう。
int mysql_insert_id ([ resource $link_identifier ])
はあなたの友人です。 http://es2.php.net/manual/en/function.mysql-insert-id.php
注:
のMySQL接続PHPのドキュメントから
。リンク識別子が指定されない場合、mysql_connect()によって最後に開かれたリンクが仮定されます。そのようなリンクが見つからない場合、引数なしでmysql_connect()が呼び出されたかのようにリンクを作成しようとします。接続が見つからないか確立されていない場合は、E_WARNINGレベルのエラーが生成されます。
成功した場合に以前のクエリでAUTO_INCREMENT列に対して生成されたID、前回のクエリでAUTO_INCREMENT値が生成されなかった場合は0、MySQL接続が確立されていない場合はFALSEです。
mysql_insert_id()は、ネイティブのMySQL C API関数mysql_insert_id()の戻り値の型をlong型(PHPのint型)に変換します。 AUTO_INCREMENT列の列タイプがBIGINT(64ビット)の場合、変換によって不正な値が返される可能性があります。代わりに、SQLクエリで内部MySQL SQL関数LAST_INSERT_ID()を使用してください。 PHPの最大整数値の詳細については、整数ドキュメントを参照してください。
最後に実行されたクエリに対してmysql_insert_id()が動作するため、値を生成するクエリの直後に必ずmysql_insert_id()を呼び出してください。
MySQL SQL関数LAST_INSERT_ID()の値には、常に最新のAUTO_INCREMENT値が含まれており、クエリ間ではリセットされません。
- 1. 挿入後に挿入されたレコードのIDを取得
- 2. 最後に挿入された行のIDを取得する
- 3. 挿入された行のIDを取得
- 4. 最後に挿入されたIDを取得したい
- 5. SQLiteDatabase、挿入された行のID
- 6. 最後に挿入されたプリペアドステートメントのIDを取得する
- 7. データベースに挿入されたばかりの行のIDを取得する
- 8. Oracle OCIは最後に挿入された行のIDを取得します
- 9. SQLiteで一括挿入された行のIDを取得する
- 10. symfonyで挿入された行の主キーIDを取得します
- 11. trafodionの最後に挿入された行IDを取得する
- 12. 挿入された行から最後のIDを取得する方法は?
- 13. jruby jdbc挿入された行のIDを取得する方法
- 14. 新しく挿入された行のIDを取得する方法は?
- 15. 複数の行に最後に挿入されたIDを取得する
- 16. Postgres 9.5に挿入された行のIDを取得する方法UPSERT
- 17. Zendに最後に挿入されたIDを取得する
- 18. 最後に挿入されたIDを取得
- 19. Psycopg2とGreenplumデータベースで最後に挿入された行IDを取得
- 20. 同じステートメントに挿入されたIDのIDを取得する
- 21. 挿入されたID MYSQL
- 22. SQL Serverで挿入された行のサイズを取得
- 23. トリガーで挿入された行を取得する
- 24. 最後に挿入された行からデータを取得
- 25. 今日から挿入された行を取得する
- 26. IDを取得するIDまたはIDを挿入するためのSP
- 27. Ajaxのポストリクエストを送信し、挿入されたIDを取得する
- 28. 'pg' gemを使って新しく挿入されたレコードのIDを取得
- 29. 挿入リクエスト後のid値の取得
- 30. 行を挿入しないで次のIDを取得する
@AlirezaNoori特にPHPではなく、関数はネイティブのMySQL関数 'LAST_INSERT_ID()'を呼び出します。したがって、実際にはこれを管理するデータベースです。 –
ありがとうございます。ああ、はい、私はそれを知っていた(私はMYSQLのドキュメントを読む)が、私は間違って言った。ごめんなさい。私を修正していただきありがとうございます。 –