29. juli 2004 - 16:45Der er
23 kommentarer og 1 løsning
Delete from table "ht_ting" hvis bruger ikke findes i table "sw".
Hvordan laver jeg en funktion i PHP, der sletter alt hvor "ejer" i tabellen ht_ting ikke findes som username i en anden tabel som hedder "SW".. Skriv endelig hvis i ikke forstår hvad jeg mener!
----------------Uddybning------------------- Jeg har to tabeller.. Den ene hedder "ht_ting" den anden hedder sw.. alle mine brugere som er oprettet på min site bliver smidt ind i sw med deres bruger info. Jeg har lige lavet en smart funktion: <? require("sys/sql.php"); $tid = time() - 5184000; mysql_query("DELETE from sw where lastonline < '$tid'"); ?>
Så jeg har fået slettet alle brugere i SW som ikke har været online de sidste 2 mnd.
Men nu skal jeg også have slette de ting de forskellige brugere havde i tabellen ht_ting..
Så hvordan sletter jeg alle ting i ht_ting, hvor username ikke findes i SW....?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
jeg har jo slettet username i den ene tabel.. så jeg skal slette alle ting i den anden tabel hvor ejer ikke findes som username.. hmm.. lad mig forklare.. Jeg har slette en masse brugere, og de brugere jeg slettede havde ting.. De ting har jeg ikke slettet.. da de ligger i et andet table.. så nu skal jeg have slettet alle ting, som ingen ejer har.. ergo, alle ting hvor ejer ikke findes som username i tabellen sw !
jeg laver bare en PHP fil med indholdet: DELETE ht_ting FROM ht_ting LEFT JOIN SW ON ht_ting.ejer = SW.username WHERE SW.username IS NULL og kører den.. eller kan jeg også bare smide det der ind i mysql ?
MySQL versionen burde osse fremgå,. Men phpMyAdmin 2.2.3 er en ældre version, så måske er MySQL ligeså. Jeg ved ikke om det kan omgås i MySQL, men om ikke andet burde du kunne lave et php script, der gør det for dig. Fx:
$res = mysql_query("select username from SW"); while ($row = mysql_fetch_row($res)) { $users[] = $row[0]; } $userstr = join("','", $users); mysql_query("delete from ht_ting where ejer not in('$userstr')");
Ja, det var jo ikke meningen. Forhåbentlig var det bare en backup det gik ud over. Har du husket apostrofferne her: $userstr = join("','", $users); Det er vigtigt at forespørgslen har det rette format alá: delete from ht_ting where ejer not in ('bruger1','bruger2','bruger3')
jeg havde taget backup.. forstår ik helt hvad du mener, hvad skal jeg skrive der hvor der står bruger1 + 2 + 3 ? - jeg har jo over 5000 brugere i min DB! Kan ikke sidde og skrive dem ind manuelt..
Jeg mener det er vigtigt at forespørgslen har den rette syntax, hvis den skal virke. Du kunne jo tjekke det ud ved at lave en print af forespørgslen inden du kører den. Altså:
$res = mysql_query("select username from SW"); while ($row = mysql_fetch_row($res)) { $users[] = $row[0]; } $userstr = join("','", $users); print("delete from ht_ting where ejer not in('$userstr')");
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.