PDO 'ON DUPLICATE KEY UPDATE' rowCount () in der MySQL-Tabelle gibt die doppelte Anzahl der aktualisierten Datensätze zurück

8

Ich arbeite an einem Projekt, bei dem ich eine CSV-Datei hochlade und eine MySQL-Tabelle aktualisiere. Am Ende meiner sql insert-Anweisung habe ich eine "auf doppelte Schlüsselaktualisierung ..." Anweisung.

Mein Problem ist, dass PDO rowCount () 2x für aktualisierte Zeilen zurückgibt. Zum Beispiel, wenn ich die CSV das erste Mal hochlade, bekomme ich insgesamt 100 Zeilen (Anzahl der CSV-Zeilen) und rowCount gibt 100 zurück, was sinnvoll ist, weil ich 100 Zeilen eingefügt habe.

Wenn ich jedoch die gleiche Datei erneut hochlade, werden alle 100 Zeilen aktualisiert (ich aktualisiere einen Unix-Zeitstempel), und rowCount gibt 200 zurück. Ich nehme an, dass rowCount 2 für jede Aktualisierung und 1 für eine Einfügung zurückgibt. p>

Sind meine Annahmen richtig? Ist jemand schon einmal darauf gestoßen und gibt es eine Lösung, die nicht 100 separate Insert-Anweisungen enthält? Ich möchte in der Lage sein, die Gesamtzahl der Zeilen in der CSV, die insgesamt neue Zeilen eingefügt und die Gesamtzahl der Zeilen aktualisiert anzuzeigen.

%Vor%

Hier ist die Abfrage für eine 3-zeilige Einfügung generiert.

%Vor%     
Nick 30.01.2013, 19:00
quelle

1 Antwort

6

Gemäß dem MySQL-Handbuch:

Mit ON DUPLICATE KEY UPDATE ist der Wert der betroffenen Zeilen pro Zeile 1, wenn die Zeile als neue Zeile eingefügt wird, und 2, wenn eine vorhandene Zeile aktualisiert wird.

Ссылка

    
bstonehill 01.02.2013, 17:34
quelle

Tags und Links