Domanda Cosa restituisce un MySQL DELETE di successo? Come verificare se DELETE ha avuto successo?


Usando PHP, sto cercando di cancellare un record, ma voglio verificare se ha avuto successo o meno. È tutto tornato da un successo DELETE FROM foo where bar = 'stuff'?

In alternativa, conosci altri modi per verificare se il DELETE ha avuto successo? O sto meglio solo assicurandomi che la riga esista prima che la elimini? Sto cercando di evitare un'altra query, se possibile.


44
2018-05-28 18:11


origine


risposte:


Supponendo che tu stia usando mysql_query:

Per altri tipi di istruzioni SQL, INSERT, UPDATE, ELIMINA, DROP, ecc., Mysql_query () restituisce TRUE in caso di successo o FALSE in caso di errore.

Se stai usando PDO :: exec, quindi il manuale dice questo:

PDO :: exec () restituisce il numero di righe che sono state modificate o cancellate dall'istruzione SQL rilasciata. Se nessuna riga è stata interessata, PDO :: exec () restituisce 0.

Non voglio rispondere a snipe, ma poiché questa è stata selezionata come risposta, dovrei notare che mysql_query restituirà TRUE anche se la query non ha effettivamente rimosso nulla. Dovresti usare mysql_affected_rows per verificarlo.


53
2018-05-28 18:13



Inoltre, se ti interessa il numero di righe interessate:

[Uso] mysql_affected_rows () per scoprire quante righe sono state interessate da un'istruzione DELETE, INSERT, REPLACE o UPDATE.


33
2018-05-28 18:18



potresti provare questo per il tuo codice php, posto dopo che la query è stata eseguita:

if (mysql_affected_rows() > 0) {
    echo "You have successfully updated your data.<br><br>";
}
else {
    echo "The data you submitted matched the current data so nothing was changed.<br><br>";
}

13
2017-09-07 01:57



Per altri tipi di SQL dichiarazioni, INSERT, UPDATE, DELETE, DROP, eccetera, mysql_query() ritorna VERO su successo o FALSE su errore


0
2018-06-14 03:56