Robię zapytanie o aktualizację z PDO. Chciałbym dowiedzieć się, czy moje zapytanie o aktualizację niczego nie zmieniło w bazie danych, ponieważ:Czy PDO rowCount() po kwerendie UPDATE pokazuje różnicę między "brak zmian" i "nieistniejący wiersz"?
- przekazane wartości są takie same jak już obecne w bazie danych. Wiem, że
rowCount()
w takim przypadku zwraca0
. - Wiersz, który próbuję zaktualizować, nie istnieje w bazie danych. O ile widzę,
rowCount()
w takich przypadkach również zwraca0
.
Czy jestem zmuszony poprzedzić AKTUALIZACJĘ instrukcją SELECT, aby dowiedzieć się, czy rekord, który próbuję zaktualizować, faktycznie istnieje? Czy istnieje inna powszechna praktyka dla tego typu rzeczy.
byłem uważne poprzez dokumentację, ale nie mogę znaleźć odpowiedzi rozstrzygającej: http://php.net/manual/en/pdostatement.rowcount.php
Natknąłem tym StackOverflow odpowiedź, która sugeruje, że rowCount() może zwrócić NULL w jakiś scenariusz, ale ja nie sądzę, że to apliccable do mojego scenariusza: zobaczyć Why does PDO rowCount() return 0 after UPDATE a table without modifying the existing data?
od komentarzy w tej kwestii:
Jeśli dane nie został zmodyfikowany, rowCount będzie zero. Jeśli dane zostały zmodyfikowane, wartość rowCount będzie równa jeden lub więcej. Jeśli wystąpił błąd , parametr rowCount będzie mieć wartość NULL lub FAŁSZ lub coś niezerowego.
UPDATE Znalazłem jeszcze jedno pytanie, które daje przykład propozycji w komentarzach poniżej: Getting the insert and update ID with PDO
Update2 Inną kwestią proponuje inne rozwiązanie, poprzez PDO::MYSQL_ATTR_FOUND_ROWS
PDO - check if row was updated?
Nie, o ile wiem. Jeśli * naprawdę * potrzebujesz tego numeru, możesz najpierw "SELECT ... FRO UPDATE". Pytanie to nie ma nic wspólnego z ChNP. –
Jeśli w tabeli znajduje się identyfikator, można dodać "id = LAST_INSERT_ID (identyfikator)" do klauzuli aktualizacji. W ten sposób 'PDO :: lastInsertId' zwróci ci liczbę. – hjpotter92
Dzięki, zbadam to jeszcze dziś i skontaktuję się z Tobą. Wydaje się, że to bardzo fajna funkcja. – maartenmachiels