| Autor | Zpráva | ||
|---|---|---|---|
| Ulet Profil * |
#1 · Zasláno: 18. 9. 2011, 20:23:06
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 |
#2 · Zasláno: 18. 9. 2011, 20:49:27 · Upravil/a: Tori
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 * |
#3 · Zasláno: 18. 9. 2011, 21:03:10
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'; |
||
|
Časová prodleva: 14 let
|
|||
0