13 Stimmen

Ermitteln der Anzahl von Zeilen, die durch eine UPDATE-Abfrage mit PHP-Mysqli übereinstimmen

Die ältere mysql-Erweiterung hat die CLIENT_FOUND_ROWS Verbindungsflag, aber ich konnte keine Entsprechung finden für mysqli .

Ich habe eine update Abfrage und möchte wissen, wie viele Zeilen die where Klausel Angepasst und nicht, wie viele tatsächlich geändert wurden (wie durch mysqli -> affected_rows ).

Die einzige Möglichkeit, die ich bisher herausgefunden habe, ist die Analyse von mysqli -> info (was in etwa so aussieht Rows matched: 40 Changed: 40 Warnings: 0 ) mit einer Regex. Aber das scheint hakelig zu sein.

7voto

Zorayr Punkte 21896

Ich habe den folgenden Code verwendet:

// Parse the digits from the info string that has the following format:
// Rows matched: 0 Changed: 0 Warnings: 0
preg_match_all('!\d+!', $mysqli->info, $m);
return $m[0][0];

5voto

Wrikken Punkte 66796

Es ist in den Optionen von mysqli_real_connect .

Auch eingeführt in PDO::MySQL in PHP 5.3.

2voto

GordonM Punkte 30109

Sie könnten SELECT COUNT(*) mit der gleichen WHERE-Klausel, bevor Sie das UPDATE ausführen. Auf diese Weise erhalten Sie die Anzahl der Zeilen, die abgeglichen werden würden.

0voto

nawfal Punkte 65966

Auch SELECT ROW_COUNT() kann die Anzahl der von der Aktualisierungsabfrage betroffenen Zeilen angeben.

0voto

sixstring Punkte 254

Ich habe eine Explosionsfunktion für die vom Befehl info zurückgegebenen Ergebnisse ausgeführt und dann index[1] genommen.

$affected = explode(":", $connection->info);
$rowsAffected = $affected[1];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X