Aktueller Standort: Startseite> Neueste Artikel> So erhalten Sie die betroffene Anzahl von Zeilen durch Pdostatement :: RowCount für bedingte Beurteilung

So erhalten Sie die betroffene Anzahl von Zeilen durch Pdostatement :: RowCount für bedingte Beurteilung

gitbox 2025-05-28

Bei der Verwendung von PHP zum Betrieb einer Datenbank müssen wir häufig wissen, wie viele Datenzeilen sie nach der Ausführung einer SQL -Anweisung beeinflussen. Wenn Sie beispielsweise Update , Löschen oder einige Einfügenvorgänge durchführen, können wir die Anzahl der betroffenen Zeilen verstehen, ob der Vorgang erfolgreich ist oder ob der nächste Schritt erforderlich ist.

Zu diesem Zeitpunkt ist die Funktion pdostatement :: rowCount () nützlich. In diesem Artikel wird die Verwendung der RowCount () -Methode verwendet und mit tatsächlichen Codebeispielen kombiniert, um zu demonstrieren, wie auf der Grundlage der Anzahl der zurückgegebenen Zeilen bedingte Urteile vorliegt.

1. Was ist pdostatement :: rowCount ()

RowCount () ist eine Methode der Pdostatement -Klasse, die die Anzahl der von der zuletzt ausgeführten SQL -Anweisung betroffenen Zeilen zurückgibt. Der Rückgabewert dieser Funktion wird normalerweise verwendet, um festzustellen, ob die Daten tatsächlich aktualisiert oder gelöscht werden.

 public int PDOStatement::rowCount();

HINWEIS: RowCount () kann sich unter verschiedenen Datenbanktreibern geringfügig unterschiedlich verhalten, insbesondere wenn sie für ausgewählte Abfragen verwendet werden, was möglicherweise nicht erwartete Ergebnisse zurückgibt.

2. Grundnutzungsmethode

Das Folgende ist ein Beispiel für die Aktualisierung von Benutzerinformationen in der Datenbank. Nach der Ausführung von SQL verwenden wir RowCount () , um festzustellen, ob Daten tatsächlich geändert wurden.

 <?php
// Datenbankverbindungsinformationen
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8';
$username = 'dbuser';
$password = 'dbpass';

try {
    // erstellen PDO Beispiel
    $pdo = new PDO($dsn, $username, $password);

    // Legen Sie die Handhabung des Ausnahmefehlers fest
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Vorbereiten SQL Aktualisieren Sie die Anweisung
    $sql = "UPDATE users SET email = :email WHERE id = :id";
    $stmt = $pdo->prepare($sql);

    // Binden Sie Parameter
    $stmt->bindValue(':email', '[email protected]');
    $stmt->bindValue(':id', 1);

    // Ausführungsanweisung
    $stmt->execute();

    // Holen Sie sich die Anzahl der betroffenen Zeilen
    $affectedRows = $stmt->rowCount();

    // Bedingte Urteilsvermögen
    if ($affectedRows > 0) {
        echo "Benutzerinformationen wurden aktualisiert,Gesamtwirkung {$affectedRows} OK。";
    } else {
        echo "Es wurden keine Benutzerinformationen geändert,Wahrscheinlich, weil sich die Daten nicht geändert haben。";
    }

} catch (PDOException $e) {
    echo "Datenbankfehler:" . $e->getMessage();
}
?>

3.. Gemeinsame Szenarien und Nutzungstechniken

1. Bestätigen Sie die Anzahl der Deletten nach dem Löschvorgang

 $sql = "DELETE FROM users WHERE last_login < NOW() - INTERVAL 1 YEAR";
$stmt = $pdo->prepare($sql);
$stmt->execute();

if ($stmt->rowCount() > 0) {
    echo "Inaktiver Benutzer wurde erfolgreich gelöscht。";
} else {
    echo "Es wurde kein Benutzer gefunden, der gelöscht werden sollte。";
}

2. Überprüfen Sie, ob die Einfügung nach dem Stapelinsertion erfolgreich ist

Einige Datenbanken (wie MySQL) ermöglichen es, dass RowCount () nach dem Stapelinsertion zurückgegeben werden:

 $sql = "INSERT INTO logs (message, created_at) VALUES 
       ('arbeiten1', NOW()), 
       ('arbeiten2', NOW())";
$stmt = $pdo->prepare($sql);
$stmt->execute();

if ($stmt->rowCount() >= 2) {
    echo "Protokolle wurden in Chargen geschrieben。";
} else {
    echo "Protokollschreibe fehlgeschlagen oder unvollständig。";
}

4.. Dinge zu beachten

  1. Für ausgewählte Abfragen ist RowCount () Verhalten ungewiss : Es wird normalerweise empfohlen , Fetchall () oder Fetch () zu verwenden, um festzustellen, ob ein Ergebnis vorliegt.

  2. Verwenden des richtigen Datenbanktreibers : Einige Datenbanken (z. B. SQLite) unterstützen in einigen Vorgängen nur begrenzte Unterstützung für RowCount () .

  3. Verwechseln Sie RowCount () nicht als einziges Zeichen für eine erfolgreiche Ausführung : Es bedeutet nur "Anzahl betroffener Zeilen" und entspricht nicht "erfolgreicher Betrieb", da die Aktualisierung derselben Daten möglicherweise nicht die Anzahl der Zeilen ändert.