Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP][PDO] Sprawdzenie powodzenia UPDATE
maviozo
post
Post #1





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Chcę umożliwić użytkownikowi modyfikację pewnych danych, z zastrzeżeniem, że gdy danych nie ma w ogóle, to zostają dodane. I tak wykombinowałem sobie, że pierwsze zapytanie będzie
  1. UPDATE `tabelka SET `dane`=:dane WHERE `warunek`=:warunek

i jeśli zwróci zero wyników, zostanie wykonane INSERT z tymi samymi danymi.

W przypadku istnienia tego wpisu, wszystko jest ok, wpis się uaktualnia. Jednak o ile zapytanie uruchomione przez phpMyAdmina, w przypadku gdy żadne pole nie spełnia warunku zwraca 0 wyników, tak nie wiem, jak w PDO sprawdzić, czy faktycznie liczba zmian to 1 czy zero. Boolowska wartość z execute() zwraca tylko, czy udało się wysłać zapytanie czy nie.

Czy jest jakiś sposób w PDO, by sprawdzić ile jest zmodyfikowanych wierszy,
bądź też jakiś inny, wydajniejszy sposób niż dwa zapytania?


Pomijam oczywiście fakt, że przed uruchomieniem zapytań, jest jeszcze warstwa sprawdzająca uprawnienia itp. ale dla sprawy nie ma to znaczenia winksmiley.jpg
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://pl.php.net/manual/en/pdostatement.rowcount.php

  1. INSERT INTO tabela (id, pole) VALUES (id, pole) ON DUPLICATE KEY UPDATE pole = VALUES(pole)

http://dev.mysql.com/doc/refman/5.0/en/ins...-duplicate.html


--------------------
Go to the top of the page
+Quote Post
maviozo
post
Post #3





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Wow, dziękuję za tak szybką i precyzyjną odpowiedź. Wydaje mi się, że powinno to w zupełności wystarczyć do rozwiązania problemu. Swoją drogą sporo wyciągam z manuala php.net i nie wiem, jakim cudem mogłem tego nie zauważyć. Chociaż rozwiązanie z samym mysql bardziej mi się podoba winksmiley.jpg
Powód edycji: [thek]: Może dlatego, że to dokumentacja mysql a nie php ;)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 04:18