28. marts 2006 - 00:58Der er
12 kommentarer og 1 løsning
Hjælp med query
Hej, jeg bruger php og mysql og har brug for at lave følgende så enkelt som muligt:
slet alle i tabellen "blabla" hvor bruger='niels', og de 25 nyeste er fredet og må ikke slettes. Alle linier har en id som er auto encrement, så det er de mindste der skal slettes.
ov, jeg er nødt til trække indholdet i picture_name ud på de linier som slettes. For jeg skal slette tilhørende billede til linien som slettes. Er det muligt at bygge ind i samme query?
Jeg kan ikke se for mig at det kan gøres i een SQL-statement, men her er et bud i PHP:
/* find alle id */ $query = mysql_query("SELECT id FROM din_tabel"); while ($fetch = mysql_fetch_assoc($query)) { $alle_id[] = $fetch['id']; }
/* find de 25 som skal fredes */ $query = mysql_query("SELECT id FROM din_tabel ORDER BY id DESC LIMIT 25"); while ($fetch = mysql_fetch_assoc($query)) { $fredet_id[] = $fetch['id']; }
/* sammenlign alle_id og fredet_id vi har nu de id der skal slettes (forhåbentligt) */ $slet_id = array_diff($alle_id, $fredet_id);
/* hvis der blev fundet nogen id der skal slettes */ if (count($slet_id) > 0) {
/* slå $slet_id op i tabellen */ $query = mysql_query("SELECT picture_name FROM din_tabel WHERE id IN(".implode(',', $slet_id)); while ($fetch = mysql_fetch_assoc($query)) { Delete_pic_if_exist($fetch['picture_name']); } }
Kanon :o) Takker mange gange... Kendte ikke array_diff() før... Så tak for det :o) Det er sjovt sommetider at se hvordan andre ville gribe det an. Man bliver jo let et vanedyr :o)
jeg får fejl i denne linie: $query = mysql_query("SELECT picture_name FROM din_tabel WHERE id IN(".implode(',', $slet_id));
Jeg kan ikke se en fejl i linien... Kan du?
min sql version er 4.1 eller lidt nyere
jeg får denne fejl: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Ja, det burde jeg have set selv... Sorry Nu virker det :o) 100% ok
TUSIND TAK :o)
Synes godt om
Ny brugerNybegynder
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.