Om jag vill hämta en post och dessutom vill ha reda på vilken placering denna får om jag hade hämtat alla poster sorterat efter ett visst fält... Hur gör jag då på mest optimerade sätt...? Tanken är sedan att använda detta för att hämta en post åt gången snabbt så det ska helst inte vara en alltför krävande kodsnutt. (man klickar för att få nästa post alltså...)
Jag tänkte om man kunde pilla in nåt i:
$sql = "SELECT * FROM table WHERE id = '".$id."' ORDER BY date LIMIT 0,1";
Jag vill alltså veta vilken placering denna post hade fått om jag hade hämtat alla poster från tabellen.
Går det att lösa med en sql-fråga? Om inte, går det att lösa med två små sql-frågor? ;)
Vet inte hur du ska lösa positionsfrågan, men om sql-satserna ska vara så snabba som möjligt ska du inte använda LIMIT, det ökar tiden som krävs rätt duktigt. Hämta alla och använd mysql_data_seek istället.
Och varför skriver du "... WHERE id = '".$id.'"..." istället för "... WHERE id = $id ..."?
Jag har skrivit '".$id.'" för att jag har hört att det är säkrare med enkelfnuttar runt värdena när man kollar mot databasen. Fel? Och att skriva '$id' funkar ju såklart inte...
Apostrofer ska du ha runt värdet om fältet är av strängtyp (varchar / char / text), eller datumtyp. Inte om det är ett talfält. Är inte id-fältet av någon sorts taldatatyp?
Jo jag känner till att man inte brukar ha fnuttisar om det är tal, men då någon sa att det var säkrare med fnuttar så har jag kört på det även på tal då det har fungerat, men basseboy byter sätt nu då :)
Jo jag känner till att man inte brukar ha fnuttisar om det är tal, men då någon sa att det var säkrare med fnuttar
Vill du ha det säker ska du konvertera det till ett tal innan du bakar in det i strängen, så att du inte får med något annat än själva det numeriska värdet. Typ injicerad SQL-kod.
men om sql-satserna ska vara så snabba som möjligt ska du inte använda LIMIT
Det ställer jag mig ytterst tveksam till. Vad har du för belägg för det? I vissa fall är det förödande att inte ha med limit.
Jaså? Det var du som tipsade om det här, så jag prövade och fick resultatet att det tog lite mer än dubbelt så lång tid att hämta 20 rader m.h.a. LIMIT än att hämta alla och sedan söka inom resultatet. Fel?
259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849