Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie PDOSTATEMENT :: RowCount, um festzustellen, ob der Einsatz erfolgreich ist

So verwenden Sie PDOSTATEMENT :: RowCount, um festzustellen, ob der Einsatz erfolgreich ist

gitbox 2025-05-28

Bei der Verwendung von PDO (PHP -Datenobjekten) in PHP für Datenbankvorgänge kann die Methode pdostatement :: rowCount () verwendet werden, um die Anzahl der von SQL -Anweisungen betroffenen Zeilen zu erhalten. Bei Einfügungsvorgängen möchten wir normalerweise RowCount () verwenden, um festzustellen, ob die Einfügung erfolgreich ist.

Was ist pdostatement :: rowCount ?

Pdostatement :: rowCount () ist eine von PDO bereitgestellte Methode, die die Anzahl der von der zuletzt ausgeführten SQL-Anweisung betroffenen Zeilen zurückgibt. Für eine Einfügungsanweisung wird die Anzahl der vom Betrieb betroffenen Zeilen zurückgegeben. Normalerweise betrifft ein Einfügen von 1 Zeile (falls ein einzelner Einsatz).

 <?php
// Stellen Sie eine Verbindung zur Datenbank her
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");

// Daten einfügen
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);

$name = 'John Doe';
$email = '[email protected]';

$stmt->execute();

// verwenden rowCount() Stellen Sie fest, ob die Einfügung erfolgreich ist
if ($stmt->rowCount() > 0) {
    echo "Dateninsertion erfolgreich!";
} else {
    echo "Dateneinfügung fehlgeschlagen!";
}
?>

Wie kann ich bestimmen, ob der Einsatz erfolgreich ist?

Nach Ausführung der Anweisung Insert mit PDO können wir RowCount () verwenden, um festzustellen, ob die Daten erfolgreich eingefügt wurden. Im Allgemeinen sollte die Anzahl der zurückgegebenen Zeilen 1 sein, wenn die Anweisung in Einfügen erfolgreich ausgeführt wird, was bedeutet, dass sie 1 Datenzeile betrifft. Wenn 0 zurückgegeben wird, kann dies daran liegen, dass die SQL -Anweisung nicht korrekt ausgeführt wird oder keine Daten eingefügt werden.

Es ist jedoch wichtig zu beachten, dass Pdostatement :: rowCount () in einigen Datenbanktreibern möglicherweise nicht eine genaue Anzahl von Zeilen zurückgibt, insbesondere wenn einige MySQL -Speichermotoren verwendet werden. Bei der Verwendung der InnoDB Storage Engine kann RowCount () beispielsweise die erwarteten Ergebnisse nicht zurückgeben, insbesondere bei der Durchführung von Stapeleinsätzen.

Wie bestimmen Sie den Erfolg bei der Verarbeitung von Batch -Einfügen?

Für Stapeleinfügungsvorgänge ist der Rückgabewert von RowCount () möglicherweise nicht einzeln. 1. Wenn wir beispielsweise mehrere Datensätze einfügen, ist der von ihm zurückgegebene Wert die Anzahl der erfolgreich eingefügten Datensätze.

 <?php
// Batch -Beispiel Beispiel
$pdo = new PDO("mysql:host=localhost;dbname=testdb", "username", "password");
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");

$data = [
    ['name' => 'Alice', 'email' => '[email protected]'],
    ['name' => 'Bob', 'email' => '[email protected]'],
    ['name' => 'Charlie', 'email' => '[email protected]']
];

foreach ($data as $user) {
    $stmt->bindParam(':name', $user['name']);
    $stmt->bindParam(':email', $user['email']);
    $stmt->execute();
}

// Bestimmen Sie die Anzahl der eingefügten Zeilen
if ($stmt->rowCount() === count($data)) {
    echo "所有Dateninsertion erfolgreich!";
} else {
    echo "Dateneinfügung fehlgeschlagen!";
}
?>

In diesem Beispiel verwenden wir RowCount () , um festzustellen, ob die Anzahl der eingefügten Datensätze mit der erwarteten Zahl übereinstimmt. Wenn konsistent, werden alle Daten erfolgreich eingefügt.

Verwenden Sie lastInSertid (), um die eingefügte ID zu erhalten

Obwohl RowCount () feststellen kann, ob die Einfügung erfolgreich ist, sollten wir die PDO :: lastInserStId () -Methode verwenden, wenn wir die ID des neuen Einfügungsdatensatzes erhalten müssen. LastInSertID () gibt die automatische ID der zuletzt eingefügten Datentabelle zurück, die für Vorgänge, die die Datensatz -ID einfügen und zurückgeben müssen, sehr nützlich ist.

 <?php
// Daten einfügen并Holen Sie sich die zuletzt eingefügt ID
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);

$name = 'David';
$email = '[email protected]';

$stmt->execute();

// Holen Sie sich die zuletzt eingefügt ID
$lastInsertId = $pdo->lastInsertId();
echo "Der zuletzt eingefügt ID Ja:$lastInsertId";
?>

LastInSertID () kann sicherstellen, dass wir die ID des neuen Datensatzes erhalten können, insbesondere wenn weitere Vorgänge zum Einfügen von Daten (z. B. Assoziation mit anderen Tabellen) erforderlich sind.

Zusammenfassung

  1. PDOSTATEMENT :: RowCount () wird verwendet, um die Anzahl der von SQL -Anweisungen beeinflussten Zeilen nach der Ausführung zu erhalten.

  2. Für die Anweisung Insert gibt RowCount () die Anzahl der eingefügten Zeilen zurück, normalerweise 1 Zeile, was angibt, dass die Einfügung erfolgreich ist.

  3. Beim Einsetzen in Chargen gibt RowCount () die tatsächliche Anzahl der eingefügten Datensätze zurück.

  4. Wenn Sie die ID des Einfügungsdatensatzes abrufen müssen, sollten Sie die Methode PDO :: lastInserStId () verwenden.

Durch die korrekte Verwendung von RowCount () und lastInserStId () können Sie Datenbankvorgänge flexibler verarbeiten, um die Richtigkeit und Integrität des Dateneinfügungsgeräts zu gewährleisten.