Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: En onnistu deletoimaan rivejä taulusta

mavijo [29.11.2007 19:46:04]

#

Alla olevassa koodissa haetaan taulusta ne rivit, joissa on yksi ja sama käyttäjätunnus. Se onnistuu, sen huomaan siitä että echo -käsky tulostaa tässä tapauksessa kaikki löytyneet 10 riviä. Mutta DELETE ei toimi. Olen vääntänyt sitä jo vaikka mihin muotoon, mutta ei. Mikä on pielessä?

Koodinpätkä on tämännäköinen:

<?php
  $cid = $user['id'];

  $tulos = mysql_query("SELECT group_id FROM groups WHERE company_id = '$cid'", $lnk)
         or die("Kysely ei onnistunut: ". mysql_error());
         while($tulosrivi = mysql_fetch_array($tulos)){
    echo "<b>".$tulosrivi['group_id']."</b> <br />";
         $sql = mysql_query("DELETE FROM groups WHERE company_id = '$company_id'", $lnk);
            }
            if(!$sql || mysql_affected_rows($lnk) < 1)
                echo "SQL-lauseessa virhe.<br />\n";
            else
                echo "Tuotetietojen poisto onnistui.<br />";
?>

(Mod. Edit. Kooditagit.)

Antti Laaksonen [29.11.2007 20:41:28]

#

Ensimmäisessä kyselyssä tieto haetaan muuttujasta $cid, toisessa muuttujasta $company_id - olisiko vika siinä? Huomaa myös, että funktiota mysql_query kutsutaan toisen kerran while-silmukan sisällä, joten poistoa saatetaan yrittää lukuisia kertoja.

mavijo [29.11.2007 20:49:21]

#

Kiitokset!

Vaihdoin '$company_id':n tuossa DELETE -lauseessa '$cid':iksi, ja onnistui.
While-silmukan sisällä delete on siksi että halutaan poistaa niin monta riviä kuin on löytynyt.

FooBat [29.11.2007 23:44:56]

#

Toi "DELETE FROM groups WHERE company_id = '$cid'" poistaa yhdellä kyselyllä kaikki ryhmät, jotka vastaavalla SELECT-lauseella löytyy. Jos tuossa olisi jotain tarkistuksia ja delete-lauseessa "WHERE group_id = '$group_id'" niin tuon voisi ymmärtää, mutta nyt tuo näyttää kummalta, kun yritetään uudestaan poistaa jo poistetuja tietoja .

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta