Vra

Ek gebruik PHP en PHPMyAdmin om 'n klein profiel werf te skep. Ek gee lede 'n ID-nommer, wat gebaseer is op wat is die grootste aantal tans in die databasis, 1

Ek het 25 toetse voor ek die PHP script waar ek wou dit te wees.

Ek dan verwyder die 25 inskrywings met behulp van PHPMyAdmin.

Maar nou, wanneer my PHP-kode doen dit:

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

Ek kry die verkeerde nommer.

Toets scenario:. Die databasistabel hou 3 inskrywings, met ID's 1, 2 en 3

Ek begin 'n debugging sessie en sit 'n breekpunt op die terugkeer $record[0]. Ek is so die inhoud daarvan en in plaas van 3, wat is die grootste aantal, dit is 28.

As in 25 + 3 = 28, die 25 inskrywings wat ek nou al geskrap ...

Het enige iemand weet wat veroorsaak dit en hoe ek dit kan regmaak?

Was dit nuttig?

Oplossing

Dit is waarskynlik omdat jy auto_increment stel en die navraag is die terugkeer van die hoogste id. Wanneer jy die ander rekords verwyder, jy het waarskynlik nie weer die motor inkrement telling.

Ander wenke

As jy 'auto_increment in MySQL dan te skrap rekords sal die volgende waarde verminder nie.

Jy kan 'n tafel leeg met TRUNCATE TABLE mytable -. Dit sal die waarde herstel

Jy kan ook waarde wat motor-inkrement dink is die volgende waarde toe te ken verander:

ALTER TABLE members AUTO_INCREMENT = 3;

Let daarop dat as jy in 'n waarde wat minder is as die huidige maksimum waarde in die motor-inkrement kolom, sal dit die waarde aan dat MAX + 1 te verander. Om te sien wat die huidige volgende waarde is ingestel op, doen die volgende:

SHOW CREATE TABLE members;

Aan die einde van die tafel definisie, sal dit "AUTO_INCREMENT = 26" of wat ook al wys dit is die huidige waarde is.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top