Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] problem z ON DUPLICATE KEY UPDATE
Forum PHP.pl > Forum > Przedszkole
redelek
Witam,

Po długiej przerwie, wróciłem do pisania drobnostek ułatwiających mi pracę. Niestety rok to dużo i wiele się zmieniło. Nie które rzeczy na fajne niektóre na trudne.
Staram się wszystko ogarnąć i nauczyć się można powiedzieć, że od nowa.
Miałem aplikację które sprawdzała mi adresy IP, jeśli wystąpiły duplikaty to zwiększał licznik , robiłem to za pomocą 2 zapytań najpierw SELECT a potem update.
Teraz korzystam z mysqli czy jakoś tak to się zwie i znalazłem takie rozwiązanie w jednym zapytaniu, ale niestety nie działa. Moje środowisko testowe XAMPP na MacOS.

zapytanie wygląda tak
  1. connectdb();
  2. $qins="
  3. INSERT INTO ".tapkaip." (ap_ip, ap_browser, ap_host, ap_date, count_ip)
  4. VALUE ('{$ip}', '{$przeg}', '{$host}', NOW(), '0')
  5. ON DUPLICATE KEY UPDATE count_ip=count_ip+1";
  6.  
  7. if($addrec = $con->query($qins)) {
  8.  
  9. echo $con->affected_rows;
  10. }


Mogę prosić Was o podpowiedź co źle zrobiłem lub jak rozwiązać taki problem w jednym zapytaniu ? Chodzi o to , że jak IP występuje w bazie to pole count_ip ma zwiększyć o 1.

Dziękuję za pomoc lub wskazówki
Turson
Jakiś bład?
redelek
no właśnie nie widzę, mam włączone wszystkie błędy w php i nic, pusto na ekranie i nic w bazie nie ma sad.gif((
Turson
echo $qins
kopiuj wklej do phpmyadmin
szukaj bledu
nospor
Procz php masz tam jeszcze baze.... masz tez wyswietlac bledy bazy...
Temat: Jak poprawnie zada pytanie
aniolekx
Nie wiem co zwraca twoja metoda "query", zakładam ze używasz mysqli wiec może to pomoże

redelek
no znalazł się błąd ale dopiero w logach mysql , chyba XAMPP nie do końca wyświetla je na ekranie.

Error : 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 ''count_ip'=count_ip+1"' at line 1
Turson
XAMPP nie ma nic do tego. Żeby wyświetliło bład SQL to musisz chcieć go wyświetlic, bo sam magicznie się nie pojawi - mysq_error, mysqli_error czy cos takiego.
redelek
No dobrze to udało się poprawić zapytanie tak, że je dodaje, ale duplikuje wpisy nie zwiększa licznika count_ip

  1. $qins="
  2. INSERT INTO ".tapkaip." (ap_ip, ap_browser, ap_host, ap_date, count_ip)
  3. VALUE ('{$ip}', '{$przeg}', '{$host}', NOW(), '0')
  4. ON DUPLICATE KEY UPDATE count_ip=count_ip+1";
  5.  
  6. var_dump($qins);
  7.  
  8. string(289) " INSERT INTO apka_ip (ap_ip, ap_browser, ap_host, ap_date, count_ip) VALUE ('127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10) AppleWebKit/600.1.25 (KHTML, like Gecko) Version/8.0 Safari/600.1.25', 'localhost', NOW(), '0') ON DUPLICATE KEY UPDATE count_ip=count_ip+1"
nospor
Bo nie zalozyles klucza UNIQUE na to co chciales by bylo unikalne, wiec sie nie dziw, ze ci duplikuje. Baza sama sie nie domysli, ze Ty sobie chcesz w glowie, by takie a takie pole było unikalne
redelek
oki to tak działa, klucz miałem ustawiony na id, zmieniłem na ap_ip. Dzięki.
Wszystkie rady przytulam do siebie i zaraz doczytam smile.gif dziękuję serdecznie za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.