Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] problem z ON DUPLICATE KEY UPDATE
redelek
post
Post #1





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Jakiś bład?
Go to the top of the page
+Quote Post
redelek
post
Post #3





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/sad.gif) ((
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


echo $qins
kopiuj wklej do phpmyadmin
szukaj bledu
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Procz php masz tam jeszcze baze.... masz tez wyswietlac bledy bazy...
Temat: Jak poprawnie zada pytanie
Go to the top of the page
+Quote Post
aniolekx
post
Post #6





Grupa: Zarejestrowani
Postów: 340
Pomógł: 46
Dołączył: 31.07.2009
Skąd: A

Ostrzeżenie: (0%)
-----


Nie wiem co zwraca twoja metoda "query", zakładam ze używasz mysqli wiec może to pomoże

Go to the top of the page
+Quote Post
redelek
post
Post #7





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
redelek
post
Post #9





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
redelek
post
Post #11





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif) dziękuję serdecznie za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 09:54