sql >> Database >  >> RDS >> Mysql

Maak onderscheid tussen 'geen rijen getroffen' en rijen die met succes zijn BIJGEWERKT - naar dezelfde waarde (MySQL en PHP)

Een eenvoudige oplossing zou twee vragen zijn.

Voer eerst een SELECT-query uit om te controleren of de rij bestaat met mysqli_num_rows().

Als de rij bestaat, kunt u de UPDATE-query uitvoeren en mysqli_affected_rows() gebruiken.

[BEWERKEN]

...Ik zal een mogelijk alternatief voorstellen voor iedereen die op zoek is naar een enkel gesprek. Ik weet niet of je geïnteresseerd bent in het doen van INSERT's, of puur UPDATEs. Hieronder vind je stof tot nadenken:

Van de bovenste opmerking @ http://php.net/manual/en/ mysqli.affected-rows.php :

Bij "INSERT INTO ON DUPLICATE KEY UPDATE"-query's, hoewel men mag verwachten dat affect_rows slechts 0 of 1 per rij retourneert bij succesvolle query's, kan het in feite 2 retourneren.

Uit Mysql-handleiding:"Met ON DUPLICATE KEY UPDATE is de waarde van de betreffende rijen per rij 1 als de rij wordt ingevoegd als een nieuwe rij en 2 als een bestaande rij wordt bijgewerkt."

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

Hier is het totaaloverzicht per rij :

+0:​​een rij is niet bijgewerkt of ingevoegd (waarschijnlijk omdat de rij al bestond, maar er zijn tijdens de UPDATE geen veldwaarden gewijzigd)

+1:er is een rij ingevoegd

+2:een rij is bijgewerkt

Kun je dat aanpassen aan je behoeften?




  1. MySQL-gegevensbestand laden

  2. Hoe het mysql root-wachtwoord opnieuw in te stellen?

  3. Verschil tussen twee datums in MySQL

  4. hoe XMLImporter en FndXdfCmp te gebruiken in Oracle EBS