Autor Zpráva
davidcoudy
Profil
Zdarec Nevim si rady s databází MYSQL mam tabulku a chci do ní přidávat data podle ip adresy ale potřebuju aby když je nová ip aby se uložila a když už tam existuje tak aby se přepsal jen čas a přičetlo číslo 1 jde o počítadlo přístupů zkoušel sem replace ale nendeto.
Pokud tohle použiju dělá to pokaždý novej řádek asi by tam měla bejt podmínka ale ja uz sem vyvařenej.

MySQL_Query("REPLACE $MySQL_tabulka (id, ip, datum, pocet) VALUES ('','$ip', '$datum', +1)");
djlj
Profil
MySQL_Query("UPDATE $MySQL_tabulka SET pocet=pocet+1 WHERE ip='$ip'");
Acci
Profil
djlj
Jenže pokud ten záznam nebude existovat, tak si nevloží nový řádek.
Kajman_
Profil *
Pokud tohle použiju dělá to pokaždý novej řádek

Asi nemáte unikátní klíč na ip.

A update a insert jde z kombinovat třeba tak, že se ověří, kolik řádku update změnil a když žádný, tak se dá ještě insert.
djlj
Profil
Acci
Ajo, moje chyba... :)

Nešlo by to třeba takto?!:

$update=MySQL_Query("UPDATE $MySQL_tabulka SET pocet=pocet+1 WHERE ip='$ip'");

if(!$update){

mysql_query("INSERT ....");

}
Hugo
Profil
djlj

Lepší imho bude odchytávat číslo chyby (mysql_errno), protože tak můžeš odlišit jednotlivé chyby od sebe a podle toho ovlivnit chování skriptu.
davidcoudy
Profil
Zkusim to snad to bude chodit ja nad tim sedim celej den a prolezl sem kde co.
Kajman_
Profil *
djlj, Hugo
Ale update vám přece nevrátí chybu, když nezmění žádný řádek. Jen když je chyba v syntaxi, chybí tabulka, práva a tak.

davidcoudy
mysql_query("update tabulka set ...");
if (mysql_affected_rows()==0) mysql_query("insert into tabulka ...");
M.
Profil *
Musíš tam mít primární klíč - to ti vyřeší to aby se ti nedělali další řádky
24k
Profil *
nebo jeste lepe

INSERT INTO ... ON DUPLICATE KEY UPDATE ...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0