PHP MySQL sorgusu bariz yanlış sonuç verir

3 Cevap php

I'm using PHP and PHPMyAdmin to create a small profile site. I'm giving members an ID number, based on which is the biggest number currently in the database, +1

Ben olmak istedim PHP komut dosyası var önce 25 testler yaptım.

Sonra PHPMyAdmin kullanarak bu 25 girdileri silinir.

Ama şimdi, benim PHP kodu bu yaptığında:

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];
}

Ben yanlış numara olsun.

Test senaryosu: veritabanı tablo kimlikleri 1, 2 ve 3 ile 3 girişleri tutar.

I start a debugging session and put a breakpoint on the return $record[0]. I check its contents and instead of 3, which is the biggest number, it's 28.

Bunu zaten silinmiş 25 +3 = 28, 25 girdileri gibi ...

Herkes bu neden ne biliyor mu ve nasıl düzeltebilirim?

3 Cevap

Eğer auto_increment seti ve sorgu yüksek id dönen var çünkü muhtemelen. Eğer diğer kayıtları silinen zaman, muhtemelen otomatik artış sayısını sıfırlamak değil.

Eğer MySQL auto_increment kullanıyorsanız o kayıtları silme sonraki değeri azalmaz.

Bu değeri sıfırlanır - Sen ile TRUNCATE TABLE mytable bir tablo boş olabilir.

Ayrıca otomatik artış tahsis sonraki değer olduğunu düşünüyor değerini değiştirebilirsiniz:

ALTER TABLE members AUTO_INCREMENT = 3;

Eğer otomatik artış sütununda mevcut maksimum değerden daha az bir değer koyarsanız, o MAX +1 değerini değiştirmek gerekir unutmayın. Geçerli bir sonraki değeri ayarlamak hangi görmek için şunu yapın:

SHOW CREATE TABLE members;

Tablo tanımı sonunda, "AUTO_INCREMENT = 26" veya ne olursa olsun geçerli değeri göstereceğiz.