Avatar billede mikkel_breum Nybegynder
26. marts 2001 - 10:53 Der er 2 kommentarer og
1 løsning

write only if data does not exist

Hejsa

Jeg har ofte behov for at teste indholdet af en table, inden jeg afgør om jeg skal skrive til den. Jeg vil fx. teste om den aktuelle data allerede er at finde i tabellen, og så kun skrive hvis dette ikke er tilfældet. Indtil videre har jeg klaret mig med nedenstående \"hack\", men det er jo en meget klodset metode, og jeg vil høre hvordan det bør gøres \"korrekt\"; altså ved at benytte en eller anden sql funktion direkte istedet for at teste resultetet i php.


# write some_data to my_table if it does already not exist

$result = mysql_query(\"SELECT some_data FROM my_table WHERE some_data LIKE \'$this_data\'\");
while ($row = mysql_fetch_array($result)) {
  extract($row);
}
if ($this_data == $some_data) {
# do nothing: it is already there
}else{
$status = mysql_query(\" INSERT INTO my_table (some_data) VALUES (\'$this_data\') \");
}
Avatar billede erikjacobsen Ekspert
26. marts 2001 - 12:48 #1
Du kan vel nøjes med at lave din Insert, og så sørge for at der ikke må være
dubletter i \"some_data\" feltet. Ok, du får en fejl, hvis den er der, men den
kan du blot ignorere. Hvis din PHP er sat til at udskrive fejlen ogsp skal du blot
kalde den

  $status = @mysql_query(\"Insert...\");
Avatar billede mortenfn Nybegynder
29. marts 2001 - 23:47 #2
$result = mysql_query(\"SELECT some_data FROM my_table WHERE some_data = \'$this_data\'\");
if(!$result)mysql_query(\" INSERT INTO my_table (some_data) VALUES (\'$this_data\') \");
Avatar billede bromer Nybegynder
10. april 2001 - 20:33 #3
Det er en bedre løsning mortenfn har, da du kan bruge $result væredi til at udskrive en lækker besked til en bruger. Du er heller ikke lige så afhængig af en godt struktuteret database.
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
Computerworld tilbyder specialiserede kurser i database-management

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