SQL "INSERT xy WHERE NOT EXISTS"-Problem

F

Flup

Gast
Hallo zusammen,

ich wollt auf meiner Homepage nen kleinen Besucherzähler einbauen. Damit wirklich nur jeder Besucher und nicht jeder Klick gezählt wird, speicher ich die IP-Adresse eine Stunde lang in einer Tabelle, die aus 3 Spalten besteht: id (INT, AUTO_INCREMENT, INDEX), ip (TEXT) und timestamp (TIMESTAMP).
Die höchste ID stellt somit die Anzahl meiner Besucher dar. Damit nun, wie gesagt, jede IP nur einmal geloggt wird, darf ein neuer Wert in die Tabelle nur eingefügt werden, wenn es die IP noch nicht gibt. Dafür hätte ich mir den Code zusammengezimmert:

PHP:
mysql_query("INSERT INTO `ip_table` (`id`, `ip`, `timestamp`) VALUES (NULL , '".$_SERVER['REMOTE_ADDR']."', CURRENT_TIMESTAMP) WHERE NOT EXISTS (SELECT id FROM ip_table WHERE ip='".$_SERVER['REMOTE_ADDR']."');");

Nur speichert das irgendwie gar nichts mehr, sobald ich den Teil ab "WHERE NOT EXISTS" reinschreibe. (Ohne den Teil wird halt jeder klick gespeichert.) Jemand ne Idee wo mein Fehler liegt?

Danke

Flup
 
Danke für den Vorschlag, das Problem dabei ist nur, dass nen TEXT-Feld ja nur unique sein kann, wenn es ne feste Länge hat, dazu müsste ich die IP-Adresse erst (MD5-)Hashen, was ich mir irgendwie ersparen wollte ;)
 
Das dürfte kein Problem sein. Nimm einfach für `ip` varchar(15) unique. Damit sollte es problemlos funktionieren, auch ohne md5.
 

Ähnliche Themen

Zurück
Oben