Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][PDO] Sprawdzenie powodzenia UPDATE
Forum PHP.pl > Forum > Przedszkole
maviozo
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
wookieb
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
maviozo
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
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.