Prüfen, ob eine Zeile in der Tabelle existiert


mordi

Mitglied
erstmal: ich weiß, dass solche themen bereits existieren. aber bisher hat mir keines davon weitergeholfen... :(

also...
ich habe eine bildergallery geschrieben, bei der alle bilder aus einem ordner ausgelesen und als thumbnail dargestellt werden. dazu gibts dann noch kommentare, die in nem admin panel hinzugefügt werden können.
so weit, so gut.
jetzt grad schreib ich das admin teil und bin fast fertig... nur das wichtigste funzt bei mit nur bedingt:
das updaten der kommentare. ich bekomme es irgendwie nicht hin, zu checken ob die tabelle bereits einen eintrag mit dem entsprechenden bild enthält.
ich wollte es eigentlich so machen:
PHP:
if(!db_query("UPDATE images SET kommentar='$kommentar' WHERE ordner='$ordner' AND bild='$bild'"))
  db_query("INSERT INTO images (ordner, bild, kommentar) VALUES ('$ordner', '$bild', '$kommentar')");
die db_query funktion habe ich selber geschrieben, erleichtert mir ein wenig den zugriff.

also eigentlich ist es ja ganz simpel, aber ich komm einfach nicht dahinter.
für hilfe wäre ich sehr dankbar...

mfg,
mordi
 
D

Dunsti

probiers mal so:

per "SELECT kommentar FROM images WHERE bild='$bild'" (oder entsprechend abgewandelt) die Kommentare abfragen, und dann mit mysql_numrows() testen, ob es ein Ergebnis gab.

benutz mal die Suchfunktion, das Thema war erst vor Kurzem. ;)


Dunsti
 
Bei welchen Fällen gibt db_query denn false zurück? Wenn es einfach nur den Rückgabewert von mysql_query zurückgibt, liegt da der Fehler. Diese Funktion liefert nämlich nur ein false als Ergebnis, wenn der Query nicht ausgeführt werden konnte. Da deine Abfrage allerdings syntaktisch korrekt ist, beschwert sich MySQL auch nicht.

Darum musst du hier auf die Anzahl der betroffenen Datensätze prüfen. Dazu benutzt du die Funktion mysql_affected_rows(). Gibt sie 0 zurück, wurde durch den vorherigen Query nichts an der Datenbank verändert, andernfalls schon.

Hope that helps :)


// edit: Jo, oder so ;) @Dunsti
 

mordi

Mitglied
jo gut, danke :)
habs nu aus zeitgründen anders gelöst, aber ist gut zu wissen. wie gesagt, die suchfunktion hat mir irgendwie nichts gebracht, aber manchmal hat man ja auch ein brett vorm kopf, sorry :)