[解決済み] PHP/MySQL で行を挿入したら 'id' を取得する
2022-04-22 06:32:38
質問
私のテーブルの'id'フィールドは、行を挿入すると自動的に増加します。行を挿入して、そのIDを取得したいのですが、どうすればよいですか?
言ったとおりにやろうと思うのですが、行を挿入してからidを取得するまでの時間を気にせずにできる方法はないでしょうか?
入力された情報と一致する行をデータベースに問い合わせることはできますが、重複する可能性が高く、違いは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()
は、すでにこの機能を備えています。
もう一つの方法は、両方のクエリを一度に実行することです。
MySQL
's
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を記録していること(そのため、競合はすでに防止されています)。
関連
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Fatal error: 未定義の関数 sqlsrv_connect() を呼び出した。
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】In_arrayが動作しない。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。
-
[解決済み] MySQLの挿入クエリから新しいレコードの主キーIDを取得する?