Aktueller Standort: Startseite> Neueste Artikel> Wie benutze ich Pdostatement :: RowCount? Lehren Sie, wie Sie die tatsächliche Anzahl von Zeilen erhalten, die die Update -Abfrage betroffen ist

Wie benutze ich Pdostatement :: RowCount? Lehren Sie, wie Sie die tatsächliche Anzahl von Zeilen erhalten, die die Update -Abfrage betroffen ist

gitbox 2025-05-28

Pdostatement :: rowCount () ist eine übliche, aber oft missverstandene Methode beim Betrieb einer Datenbank mit PDO in PHP. Insbesondere nach Ausführung von Aktualisierungen oder Löschen von Anweisungen verwenden wir häufig, um festzustellen, ob die Daten "aktualisiert" oder "gelöscht" wurden. Aber kennen Sie die Details des Verhaltens dahinter?

Grundnutzung

 $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$sql = "UPDATE users SET status = 'active' WHERE last_login > :date";
$stmt = $pdo->prepare($sql);
$stmt->execute([':date' => '2024-01-01']);

echo "Aktualisiert " . $stmt->rowCount() . " Zeilenaufzeichnungen";

Dieser Code führt eine Update -Anweisung mithilfe von RowCount () aus, um die tatsächliche Anzahl der betroffenen Zeilen zu erhalten.

Dinge zu beachten

  1. Nur gültig für DML : RowCount () kann die Anzahl der betroffenen Zeilen nach Einfügen , Aktualisieren und Löschen korrekt zurückgeben. Für ausgewählten gibt der MySQL -Treiber normalerweise 0 zurück.

  2. Bezogen auf Datenänderungen : RowCount () kann 0 zurückgeben, wenn sich die Zielzeilendaten nicht wirklich ändert (d. H. Der neue Wert ist der gleiche wie der alte Wert). Dies ist ein Problem mit MySQL -Verhalten, nicht mit PDO.

  3. Nicht gleich "übereinstimmen Anzahl der Zeilen" : Es zählt "Anzahl der Zeilen, die sich tatsächlich ändern", nicht "Anzahl der Zeilen, die den Wherdien erfüllen".

Beispiel: Erkennen Sie, ob Benutzerinformationen aktualisiert werden

 $sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':email' => '[email protected]', ':id' => 1]);

if ($stmt->rowCount() > 0) {
    echo "Benutzerinformationen wurden aktualisiert";
} else {
    echo "Kein Update,Es kann sein, dass sich die Daten nicht geändert haben oder ID Existiert nicht";
}

Das Beherrschen des Verhaltens von RowCount () kann Ihre Geschäftslogik strenger machen und vermeiden, dass die Datenbankoperation in Kraft tritt. Weitere Beispiele finden Sie unter https://gitbox.net/docs/pdo-update .