Autor Zpráva
Ulet
Profil *
Ahoj, chci vytvořit jednoduchý "blacklist" od kterého zapisuji počet neoprávněných přistupů. A jednoduše chci abych pokud spustím příkaz do počtu přístupů (sloupec attempt) u danné ip přičetl 1 nebo pokud neexistuje tak ten řáděk vytvořil.

Našel jsem na to ideální dotaz ON DUPLICATE KEY UPDATE... bohužel se to mysql pořád nelíbí
$dotaz = 'INSERT INTO blacklist (ip, attempt, date)
VALUES ("'.$_SERVER["REMOTE_ADDR"].'", 1, NOW())
ON DUPLICATE KEY UPDATE blacklist
SET attempt=attempt+1
WHERE ip="'.$_SERVER["REMOTE_ADDR"].'"';

dostanu: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET attempt=attempt+1 WHERE ip="127.0.0.1"' at line 4

pro upřesnění:
PRIMARY KEY (ip), mysql 5.5

ještě mě napadla varianta jen IP zapsat do tabulky na X řádků (dle počtu neoprávněných přístupů) a pak pomocí je COUNT(*) jednoduše spočítat ale je to o něco zdlouhavější (si myslím).
Tori
Profil
Do části UPDATE se píšou rovnou sloupce:
$dotaz = 'INSERT INTO blacklist (ip, attempt, date) 
VALUES ("'.$_SERVER["REMOTE_ADDR"].'", 1, NOW()) 
ON DUPLICATE KEY UPDATE attempt=attempt+1 
WHERE ip="'.$_SERVER["REMOTE_ADDR"].'"'; 

Edit: ↓ omlouvám se, na WHERE jsem zapomněla.
Ulet
Profil *
Jee díky moc, nakonec tam teda nechtěl ani WHERE takže dotaz vypadá takto:
$dotaz = 'INSERT INTO blacklist (ip, attempt, date)
VALUES ("'.$_SERVER["REMOTE_ADDR"].'", 1, NOW())
ON DUPLICATE KEY UPDATE attempt=attempt+1';

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0