1

「id」という列を持つmysqlテーブルがあります-この列には自動インクリメントが設定されています。

INSERT INTO クエリを実行せずに、PHP と PDO を使用して次の自動インクリメント値を取得する方法を知りたいだけです。(私はこれについていくつかの質問を見つけました - しかし、INSERT INTO なしで mysqli のみに基づいているものはありません)。

ありがとう!

4

5 に答える 5

1

なぜこれが必要なのですか?

必要に応じて、このように現在の自動インクリメント値を取得できますが、これが必要になる状況は見当たりません。

SELECT `AUTO_INCREMENT`
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'DatabaseName'
AND   TABLE_NAME   = 'TableName';

より詳しい情報:

于 2013-08-29T10:35:26.817 に答える
0

あなたがこれを望む/必要とする理由がわかります。DBに追加のクエリを送信することなく「キー」を一意に保つ新しいクライアントのセキュリティの一部として使用します。

$q = $db->query("SHOW TABLE STATUS LIKE 'yourtable'");
$next = $q->fetch(PDO::FETCH_ASSOC);
echo $next['Auto_increment'];
于 2015-08-15T20:11:51.067 に答える
0

次の ID を要求してからそれを使用するまでの間に、誰かが同時クエリによって新しいレコードが挿入され、取得した ID が無効になるため、注意してください。

名前を知らなかったときに新しい人のレコードを追加したい場合、newPersonを入れたいとしましょう

ID を取得して db newPerson に書き込みます

しかし、これは起こる可能性があります:

get1 id get2 id write1 to db newPerson write2 to db newPerson

ここで、1 と 2 はたまたま同時に実行される 2 つの並行スクリプトです。

簡単な修正は、これを回避するためにトランザクションを使用することです

于 2019-03-20T22:45:29.630 に答える