目次
ディスカッションに返信 (解決策)

mysql_insert_id についての質問

Jun 23, 2016 pm 01:55 PM
疑い

CREATE TABLE `create_id` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '生成自增user_id',  `v` varchar(1) NOT NULL COMMENT '用于生成新的id',  PRIMARY KEY (`id`),  UNIQUE KEY `v` (`v`)) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;replace into `create_id` set `v`='1' ;
ログイン後にコピー

この SQL を実行すると、mysql_insert_id を使用して挿入 ID を取得できなくなります。 replace into によって生成された新しい ID を取得するメソッド/関数はありますか?


ディスカッションに返信 (解決策)

replace コマンドは新しい ID を生成する場合と生成しない場合があります
したがって、取得できないのは正常です

それで、によって生成された新しい ID を取得するメソッド/関数はありますかに置き換えますか?
答えはノーですが、ID を指定することはできます

replace コマンドは新しい ID を生成する場合としない場合があります
したがって、取得できないのは正常です

では、生成された新しい ID を取得するメソッド/関数はありますかに置き換えることによって?
答えはノーですが、ID を指定できます



私のテーブル構造によれば、毎回同じ SQL が実行されますが、新しい ID が生成されない可能性はありますか?
v は一意であり、毎回同じ値に readplace するので、ID は毎回 1 ずつ増加するはずです。

騙されました!
テストしたところ、利用可能になりました

そして、PHP マニュアルでこのヒントを見ました:
警告
mysql_insert_id() MySQL の内部 C API 関数 mysql_insert_id() の戻り値を long (PHP では int という名前) に変換します。 AUTO_INCREMENT カラムのタイプが BIGINT の場合、mysql_insert_id() によって返される値は正しくありません。代わりに、SQL クエリで MySQL の内部 SQL 関数 LAST_INSERT_ID() を使用できます。

replace into `create_id` set `v`='1';select LAST_INSERT_ID() as `id` from `create_id`;
ログイン後にコピー

これは実際に最新の ID を返すことができます。

select LAST_INSERT_ID() as `id` from `create_id`
?
select id from `create_id` order by id desc limit 1
1 つではありません???

騙されたよ!
テストしたところ、利用可能になりました



うーん。 。 。外国人が php マニュアルでこれを書いているのを見ました:
athies at gmail dot com 21-Jul-2005 11:36

mysql_insert_id() は REPLACE で動作します

select LAST_INSERT_ID() を ` id として使用します。 ` from `create_id`;
`create_id` から ID を選択 制限 1
1 つではありません


同時実行の場合、ID desc による順序は他の人の ID である可能性があります。
LAST_INSERT_ID() は特定のデータベース接続の範囲内にありますか?
この方法でも ID を取得できることがわかりました、学びました

select id from tb order by id desc limit 1

select id from tb order by id desc limit 1

これは、図書館ですよね?作成者は、データを挿入するときに現在の ID を取得したいと考えています。

TP で書きました: $Form=M('member'); 返されたレコードセットには ['Auto_increment']; が含まれています。自動挿入ID をインクリメントします

その後、mysql_insert_id() で実際に取得できることがわかりました。熱心なコメントをありがとうございます
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles