Ik heb deze query, waarvan ik hoopte dat hij bij het bestaan van het record de boel zou gaan updaten. Maar hij doet enkel bij elke uitvoer een nieuwe INSERT? Hoe kan dit? De tabel is zo te zien netjes InnoDB, en ik heb het ip-veld gekozen als primary key, oh ja.. het ip-adres blijft hetzelfde ;-).

Hoe kan dit?


INSERT INTO login_attempts (ip, attempts, last_attempt) 
VALUES ('127.0.0.1', 1, NOW()) 
ON DUPLICATE KEY UPDATE attempts = attempts + 1, last_attempt = NOW() 


Iemand die een idee heeft? Of zie ik wat over het hoofd?

Update:
Ah, ik moest 'm UNIQUE maken. Fixt! :-P
Het zit hem in het deel 'ON DUPLICATE KEY', dus als je dezelfde (primary) key opgeeft wordt het record bijgewerkt in plaats van opnieuw ingevoerd. Een primary key is altijd unique.

Je kunt het veld `ip` ook alleen unique maken zonder dat het een primary key is. Het klinkt wel logisch dat het dan ook werkt. Maar dit soort situaties probeer ikzelf vanuit goed gedrag wel te mijden.
Ik heb het ip-adres veld nu zo wel op PK als UNIQUE staan, en dat werkt. :-)

Reageren