私はmysqli_insert_id()
が全体のサーバーまたはそのIDを挿入した特定のユーザーからレコードを返すというmysqlの質問をしていますか?全体的に見れば、この関数を使うのは安全ではないからです。mysqli_insert_id()はサーバ全体から、または同じユーザからレコードを取得しますか?
答えて
上記の@daanからのコメントは間違っています。 insert_id()
は、最後のinsert
クエリのauto_incrementフィールドに配置されたIDを返します。これは、insert_id()クエリを実行している接続が実行されたことを示します。
テーブル内の最大のIDを返しません。他の接続によって作成されたIDを返しません。他のユーザーによって作成されたIDは返しません。
それは文字通り最後のID あるLASTによって作成されたYOUはが行わYOUを挿入します。
これは、挿入を実行し、作成したIDをlast_insert_id()
で取得し、そのIDを他のクエリで使用して親子レコードを作成することが100%信頼できることを意味します。
ただし、insert_id()
は、のONEのid値のみを返します。複数値の挿入を行うと、最後の値セットからIDを取得するだけです(例:
INSERT INTO sometable (x, y) VALUES (1,2), (2,3)
はまだ内部的に2つの挿入を実行し、あなただけの2,3
タプル、ない1,2
のIDを取得したいです。
INSERT ... // query #1
INSERT ... // query #2
SET id = last_insert_id();
のみクエリ#2によって作成されたID、およびクエリ#1からのIDは「失われた」されてしまいます。
は同様に、以前のすべてのクエリのためのメモリがありません。
私はそれがサーバー上のユーザーをどのように区別するのかを知りたいですか? –
Daanのコメントは表示されません。彼はそれを削除したかもしれない。私は自分自身を見て覚えていないので、取り出すべきです。 –
@ ZainFarooq:特定の接続に結びついているためです。たとえあなたのコードがDBへの複数の同時接続を保持していても、それが呼び出されたID関数KNOWSはその特定の接続によって生成されたIDだけを返します。 –
@ZainFarooq mysqli_insert_id()関数を実行する前に、PHPにmysqli_connect()関数と呼ばれるものがあり、サーバに接続してデータベースを選択してレコードを取得します。
mysqli_insert_id()関数がyesの場合は、使用するのが完全に安全で、AUTO_INCREMENT属性を持つカラムを持つテーブルのクエリで生成されたIDを返します。最後の問合せがINSERTまたはUPDATE文でないか、または変更された表にAUTO_INCREMENT属性を持つ列がない場合、この関数はゼロを戻します。
- 1. ドロップダウンメニューから同じIDの行全体を取得
- 2. oledbレコード全体を取得して.accdbから返す
- 3. OpenFireサーバからユーザのリストを取得
- 4. OneDrive JS APIからファイルツリー全体を取得します。
- 5. コンテンツプロバイダはWebサーバから結果を取得しますか?
- 6. domからhtml全体を取得しますが、いくつかの要素は除外しますか?
- 7. 非同期パイプはObservableまたはSubjectから値を取得しますか?
- 8. PyQtはユーザからの日付を取得します
- 9. リスナは、スパーク・ジョブ・サーバからジョブ・ステータスを取得します。
- 10. PHP IMAPはサーバからUNSEENのメールを取得します
- 11. PHPはURLのページからレコードを取得します
- 12. MySQLからのウェブサイト全体のシンボルは、データベースのデータを取得
- 13. サーバからコピーしたSubversionディレクトリから元のファイルを取得
- 14. キュレーターはelasticsearchクラスタ全体からインデックスを削除しますか?
- 15. mySQL:レコードテーブルを同じテーブルから取得
- 16. サーバからデータを取得
- 17. Spring Securityで異なるサーバからユーザとロールを取得
- 18. サーバ起動時にmongodbからユーザ文書を取得
- 19. ActiveRecordはhas_manyからレコードを取得し、スコープを通じて関連関係を取得します
- 20. SQLは同じ週にレコードを取得します
- 21. グループ化された結果から、行全体を取得
- 22. CodeIgniterは同じクラス内の他のメソッドから変数を取得します
- 23. ADODB RecordsetはAccessから多値フィールド全体を取得できません
- 24. MySQLのチェックは値が同じであるか、私は、テーブルからレコードを取得していない
- 25. プロシージャPLSQLからユーザ定義レコードを取得
- 26. githubからリポジトリ全体をどのように取得できますか?
- 27. spotifyライブラリ全体からトラックのリストを取得できますか?
- 28. misc.imread()から得られたndarrayから値の列全体をどのように削除しますか?
- 29. Symfonyはエンティティから接続されたユーザIDを取得します
- 30. MySQLから10レコードを取得しますか?
それを使用するのは安全ですか? –
はい使用するのがなぜ安全ではないでしょうか? – Daan
準備文を使用していない場合は、他のユーザーのレコードを返すことができるので、 –