Mysql
 sql >> Database >  >> RDS >> Mysql

Distinguere tra "nessuna riga è stata interessata" e righe aggiornate con successo - allo stesso valore (MySQL e PHP)

Una soluzione semplice sarebbero due domande.

Innanzitutto, esegui una query SELECT per verificare se la riga esiste utilizzando mysqli_num_rows().

Quindi, se la riga esiste, puoi eseguire la query UPDATE e utilizzare mysqli_affected_rows().

[MODIFICA]

... Suggerirò una potenziale alternativa per chiunque cerchi una singola chiamata. Non so se sei interessato a fare INSERT o semplicemente UPDATE. Di seguito alcuni spunti di riflessione:

Dall'alto commento @ http://php.net/manual/en/ mysqli.affected-rows.php :

Sulle query "INSERT INTO ON DUPLICATE KEY UPDATE", sebbene ci si possa aspettare che le righe_affettate restituiscano solo 0 o 1 per riga in caso di query riuscite, in realtà potrebbe restituire 2.

Dal manuale di Mysql:"Con ON DUPLICATE KEY UPDATE, il valore delle righe interessate per riga è 1 se la riga viene inserita come nuova riga e 2 se viene aggiornata una riga esistente."

Vedere:http://dev.mysql.com /doc/refman/5.0/en/insert-on-duplicate.html

Ecco la ripartizione della somma per riga :

+0:​​una riga non è stata aggiornata o inserita (probabilmente perché la riga esisteva già, ma nessun valore di campo è stato effettivamente modificato durante l'AGGIORNAMENTO)

+1:è stata inserita una riga

+2:è stata aggiornata una riga

Puoi adattarlo alle tue esigenze?