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

Skeln mellem "ingen rækker blev påvirket" og rækker, der blev opdateret - til samme værdi (MySQL og PHP)

En simpel løsning ville være to forespørgsler.

Kør først en SELECT-forespørgsel for at kontrollere, om rækken findes ved hjælp af mysqli_num_rows().

Så, hvis rækken eksisterer, kan du køre UPDATE-forespørgslen og bruge mysqli_affected_rows().

[EDIT]

...Jeg vil foreslå et potentielt alternativ til alle, der søger et enkelt opkald. Jeg ved ikke, om du er interesseret i at lave nogen INDSÆT eller rene OPDATERINGER. Nedenfor er lidt stof til eftertanke:

Fra den øverste kommentar @ http://php.net/manual/en/ mysqli.affected-rows.php :

På "INSERT INTO ON DUPLICATE KEY UPDATE"-forespørgsler, selvom man kan forvente, at affected_rows kun returnerer 0 eller 1 pr. række ved vellykkede forespørgsler, kan det faktisk returnere 2.

Fra Mysql manual:"Med ON DUPLICATE KEY UPDATE er den berørte rækkeværdi pr. række 1, hvis rækken er indsat som en ny række og 2, hvis en eksisterende række er opdateret."

Se:http://dev.mysql.com /doc/refman/5.0/da/insert-on-duplicate.html

Her er summen pr. række :

+0:​​en række blev ikke opdateret eller indsat (sandsynligvis fordi rækken allerede eksisterede, men ingen feltværdier blev faktisk ændret under OPDATERING)

+1:en række blev indsat

+2:en række blev opdateret

Kan du få det til at passe til dine behov?




  1. 4 måder at kontrollere, om der findes en tabel i MariaDB

  2. ÆNDRE TABEL uden at låse bordet?

  3. Sådan opretter du forbindelse til MySQL ved hjælp af Microsoft .NET

  4. Hvordan opretter jeg forbindelse til en SQL Server 2008-database ved hjælp af JDBC?