harald_ Skrevet 29. november 2007 Del Skrevet 29. november 2007 Jeg har en index i en mysql tabell med auto_increment, og skulle gjerne hentet ut det siste (høyeste) tallet som er tildelt. Noen som kan hjelpe meg med det? Lenke til kommentar
Martin A. Skrevet 29. november 2007 Del Skrevet 29. november 2007 SELECT * FROM table ORDER BY id DESC LIMIT 1 Dette har heller ikke noe med PHP å gjøre. Lenke til kommentar
harald_ Skrevet 29. november 2007 Forfatter Del Skrevet 29. november 2007 (endret) Sorry.. Men takk for hjelpen i alle fall! Endret 29. november 2007 av harald_ Lenke til kommentar
Martin A. Skrevet 29. november 2007 Del Skrevet 29. november 2007 $antall = mysql_query( "SELECT id FROM filer ORDER BY id DESC LIMIT 1" ); $row = mysql_fetch_assoc( $antall ); echo $row['id']; Burde funke. Lenke til kommentar
Zandar Skrevet 29. november 2007 Del Skrevet 29. november 2007 En annen måte å hente maks id på... SELECT MAX(id_kolonne) AS maks_id FROM tabell Lenke til kommentar
arex1337 Skrevet 30. november 2007 Del Skrevet 30. november 2007 Også relevant: http://no.php.net/mysql_insert_id Lenke til kommentar
Mats Danielsen Skrevet 3. desember 2007 Del Skrevet 3. desember 2007 Arex1337 sin fungerer best, dette er det raskeste også. Lenke til kommentar
Zandar Skrevet 3. desember 2007 Del Skrevet 3. desember 2007 (endret) Arex1337 sin fungerer best, dette er det raskeste også. Jaha? kan du gi en forklaring hvorfor det er best og raskest? Trådstarter skrev Jeg har en index i en mysql tabell med auto_increment, og skulle gjerne hentet ut det siste (høyeste) tallet som er tildelt. Han ønsker altså å finne siste/høyeste id i tabellen. I hvilken sammenheng id skal brukes står det ingenting om. mysql_insert_id fungerer kun om man nettopp har gjennomført en INSERT-spørring og at den spørringen genererer en AUTO_INCREMENT verdi. mysql_insert_id fungerer også kun rett med forbindelsen som utførte forrige INSERT-spørringen, ellers vil den returnere feil verdi. Ved feil returnerer mysql_insert_id 0 dersom forrige spørring ikke genererte en ny id, og FALSE dersom en forbindelse ikke finnes. Eksempel tatt fra php.net <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db('mydb'); mysql_query("INSERT INTO mytable (product) values ('kossu')"); printf("Last inserted record has id %d\n", mysql_insert_id()); ?> Altså er mysql_insert_id ubrukbar dersom han ønsker siste/høyeste id utenom en innsetting-situasjon som genererer inkrementasjon av den gitte id'en. mysql_insert_id fungerer heller ikke på kolonner av typen BIGINT, så det beste ved innsetting i flere tabeller der id refererer til siste id i en annen tabell er å bruke LAST_INSERT_ID() i spørringen. Enkelt eksempel (uten noen form for feilhåndtering). <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db('mydb'); //Innsetting i første tabell mysql_query("INSERT INTO tabell_1 (kolonne) values ('verdi')"); /* Innsetting i andre tabell der id fra første spørring legges inn med LAST_INSERT_ID() */ mysql_query("INSERT INTO tabell_2 (id, kolonne) values (LAST_INSERT_ID(), 'verdi')"); ?> Endret 3. desember 2007 av Zandar Lenke til kommentar
Peter Skrevet 3. desember 2007 Del Skrevet 3. desember 2007 Når trenger du en id av typen BIGINT? Svært få har over 4 milliarder rader i tabellen sin. Lenke til kommentar
Mats Danielsen Skrevet 3. desember 2007 Del Skrevet 3. desember 2007 Arex1337 sin fungerer best, dette er det raskeste også. Jaha? kan du gi en forklaring hvorfor det er best og raskest? (..) Selvfølgelig, denne funksjonen kobler seg kun inn mot en enkel rad i databasen imot en vanlig spørring som faktisk henter ut HELE tabellen. Enkelt og greit derfor. Lenke til kommentar
Zandar Skrevet 3. desember 2007 Del Skrevet 3. desember 2007 Arex1337 sin fungerer best, dette er det raskeste også. Jaha? kan du gi en forklaring hvorfor det er best og raskest? (..) Selvfølgelig, denne funksjonen kobler seg kun inn mot en enkel rad i databasen imot en vanlig spørring som faktisk henter ut HELE tabellen. Enkelt og greit derfor. Den er grei, men funksjonen fungerer ikke uten at man har satt inn data først... LAST_INSERT_ID() henter heller ikke ut HELE tabellen. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå