3

PHP と PHPMyAdmin を使用して、小規模なプロファイル サイトを作成しています。メンバーに ID 番号を付与します。これは、現在データベースにある最大の番号 +1 に基づいています。

必要な場所にある PHP スクリプトを取得する前に、25 のテストを行いました。

次に、PHPMyAdmin を使用してこれらの 25 のエントリを削除しました。

しかし今、私のPHPコードがこれを行うとき:

function getLatestID() {
    $query = "SELECT max(member_id) FROM members";
    $result = @mysql_query($query) or showError("unable to query database for user information");
    if (!($record = mysql_fetch_array($result))) return null;
    return $record[0];
}

間違った番号を取得します。

テスト シナリオ: データベース テーブルには 3 つのエントリがあり、ID は 1、2、3 です。

デバッグ セッションを開始し、return にブレークポイントを設定します$record[0]。中身を確認すると、一番大きい数字の3ではなく、28だった。

25+3=28 というように、すでに削除した 25 個のエントリは...

これの原因と修正方法を知っている人はいますか?

4

3 に答える 3

6

おそらく、auto_increment が設定されていて、クエリが最高の ID を返しているためです。他のレコードを削除したときに、自動インクリメント カウントをリセットしなかった可能性があります。

于 2009-03-14T21:21:35.423 に答える
5

MySQL で使用している場合auto_increment、レコードを削除しても次の値は減少しません。

テーブルを空にすることができますTRUNCATE TABLE mytable- これにより値がリセットされます。

于 2009-03-14T21:20:31.337 に答える
3

自動インクリメントが次に割り当てる値であると考える値を変更することもできます。

ALTER TABLE members AUTO_INCREMENT = 3;

自動インクリメント列に現在の最大値より小さい値を入力すると、値がその MAX+1 に変更されることに注意してください。現在の次の値が何に設定されているかを確認するには、次の操作を行います。

SHOW CREATE TABLE members;

テーブル定義の最後に、「AUTO_INCREMENT = 26」または現在の値が何であれ表示されます。

于 2009-03-14T21:39:24.770 に答える