Avatar billede michaeltryl Seniormester
24. august 2006 - 18:36 Der er 19 kommentarer og
1 løsning

hente sidste id nr ud

hvordan kan jeg kun hente den sidst indsatte post ud fra databasen, det eneste jeg skal bruge er id nummeret på posten
Avatar billede pidgeot Nybegynder
24. august 2006 - 18:37 #1
Forudsat du mener MySQL: $sidsteid=mysql_insert_id();
Avatar billede michaeltryl Seniormester
24. august 2006 - 18:48 #2
ja det er MySQL, men jeg vil godt have skrevet på siden f.eks
sidste post er id=$sidsteid

men hvordan skal min forspørgsel se ud?
Avatar billede boost Nybegynder
24. august 2006 - 18:50 #3
$sidsteid = mysql_insert_id();

echo 'Sidste post er id = '.$sidsteid;
Avatar billede michaeltryl Seniormester
24. august 2006 - 18:56 #4
indsætter jeg det får jeg følgende skrevet ud
Sidste post er id = 0
og den sidste post i databasen har id nr. 129
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:05 #5
Kalder du mysql_insert_id() umiddelbart efter din INSERT, og dermed inden andre queries? Hvis ikke, så er det derfor den fejler.

Du kan vælge at lave en ny query, SELECT LAST_INSERT_ID(), hvilket også vil virke hvis du laver en SELECT inden du henter ID'et - så må du bare ikke have indsat mere end den række.
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:08 #6
jeg skaber forbindelse til databasen og lige derefter skriver jeg
$rate = mysql_query("SELECT LAST_INSERT_ID() ");
while ($d = mysql_fetch_assoc($rate))
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:13 #7
Så du siger altså at du IKKE har lavet din INSERT med den forbindelse du prøver at hente ID'et ud med, men derimod med en helt ny? Så er det du vil ikke muligt uden potentielle problemer hvis der bliver indsat to rækker næsten samtidigt.
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:14 #8
okay det vil sige jeg skal indsætte noget før jeg kan hente id ud?
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:15 #9
forresten vil der ikke blive indsat to poster næsten samtidig, da det kun er mig som skal bruge den formular
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:16 #10
Ja, naturligvis - ellers ved den ikke hvad den sidst indsatte post er.

Du kan godt snyde ved at SELECTe MAX(id) fra tabellen, men den oplysning har man reelt intet at bruge til.
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:16 #11
Af nysgerrighed - hvad skal du bruge det sidst indsatte ID til hvis du ikke indsætter noget?
Avatar billede erikjacobsen Ekspert
24. august 2006 - 19:17 #12
Du kan altid lave en  SELECT max(id) as tal FROM dintabel
Hvad du så skal bruge det til, ved jeg ikke, men det er nu ikke altid det giver mening.
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:21 #13
Jeg har en tabel med sjove tekster og en anden tabel hvor stemmerne til teksterne ligger.
når jeg indsætter en tekst i "tekst databasen" skal der indsættes et link i "rate tabellen" og i dette link skal det sidst indsatte id fra "tekst tabbellen" være i
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:22 #14
Jeg kan også sige at hvis nu jeg ville vise den sidst indsatte række på min side, hvordan skal min forspørgsel så se ud?
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:23 #15
Så indsæt da det link umiddelbart efter du indsætter teksten? Har svært ved at se hvorfor du ikke bare kan kalde mysql_insert_id()/SELECTe LAST_INSERT_ID() når du alligevel indsætter den anden.
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:26 #16
problemet er at det de to tabeller ligger i to forskellige databaser derfor skal jeg når jeg har indsat data i den ene tabel (databse1) skal jeg oprette forbindelse til databse to og indsætte id'et fra database 1.
derfor vil jeg godt have id'et lavet til en variabel som jeg kan flytte med over
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:27 #17
...hvilket du gør ved at kalde mysql_insert_id eller selecte det andet ud i en variabel inden du cutter forbindelsen.
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:30 #18
okay efter jeg har indsat teksten i tabellen skriver jeg sådan eller hvad?
$rate = mysql_query("SELECT LAST_INSERT_ID() ");
while ($d = mysql_fetch_assoc($rate)
Avatar billede pidgeot Nybegynder
24. august 2006 - 19:34 #19
Eftersom det jo kun er en værdi kan du lige så godt bare gøre det her:

$rate = mysql_result(mysql_query("SELECT LAST_INSERT_ID()"),0);

Men ja, det er sådan set det du skal gøre - du henter ganske enkelt ID'et ud inden du cutter forbindelsen.
Avatar billede michaeltryl Seniormester
24. august 2006 - 19:38 #20
yes du har fået point og mange tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester