Sto facendo una query di aggiornamento con PDO. Vorrei capire se la mia query di aggiornamento non ha modificato nulla nel database, poiché:Can PDO rowCount() dopo la query UPDATE mostra la differenza tra "nessuna modifica apportata" e "riga inesistente"?
- i valori passati sono gli stessi già presenti nel database. So che
rowCount()
in questo caso restituisce0
. - la riga che sto tentando di aggiornare non esiste nel database. Per quanto posso vedere,
rowCount()
in questi casi restituisce anche0
.
Sono costretto a precedere il mio UPDATE da un'istruzione SELECT, per capire se il record che sto tentando di aggiornare esiste effettivamente? O c'è un'altra pratica comune per questo genere di cose.
Ho sfogliando attraverso la documentazione, ma non riesco a trovare una risposta definitiva: http://php.net/manual/en/pdostatement.rowcount.php
che ho incontrato questa risposta StackOverflow, che suggerisce che rowCount() potrebbe restituire NULL in qualche scenario di, ma io non pensare che sia apliccable al mio scenario: vedere Why does PDO rowCount() return 0 after UPDATE a table without modifying the existing data?
Dai commenti in questa domanda:
Se i dati non è stato modificato, il rowCount sarà zero. Se i dati sono stati modificati, il rowCount sarà uno o più. Se c'è stato un errore , rowCount sarà nullo o falso o qualcosa di diverso da zero.
UPDATE ho trovato un'altra domanda che fornisce un esempio di proposizione nei commenti qui sotto: Getting the insert and update ID with PDO
UPDATE2 Un'altra domanda propone un'altra soluzione, tramite PDO::MYSQL_ATTR_FOUND_ROWS
PDO - check if row was updated?
No, per quanto ne so. Se * veramente * hai bisogno di quel numero, puoi prima selezionare "SELEZIONA ... FRO AGGIORNAMENTO". A proposito, la domanda non ha nulla a che fare con la PDO. –
Se nella tabella è presente un ID, è possibile aggiungere 'id = LAST_INSERT_ID (id)' alla clausola di aggiornamento. In questo modo, 'PDO :: lastInsertId' ti restituirà un numero. – hjpotter92
Grazie, esaminerò più tardi oggi e tornerò da te. Sembra una funzionalità molto bella. – maartenmachiels