Start · Sprachen · PHP · Referenz · ocirowcount

ocirowcount

Funktion

Alias von <code>oci_num_rows()</code> — gibt die Anzahl der von einer DML-Anweisung betroffenen Zeilen zurück.

seit PHP 5.0.0 Kategorie: db

Signatur

ocirowcount(resource $statement): int|false

Beschreibung

ocirowcount() ist ein veralteter Alias der Funktion oci_num_rows() und liefert die Anzahl der Zeilen, die durch eine DML-Anweisung (INSERT, UPDATE, DELETE) in einer Oracle-Datenbank betroffen wurden. Die Funktion wird über die OCI8-Erweiterung bereitgestellt.

Wichtig: Bei SELECT-Anweisungen ist das Ergebnis nicht die Gesamtanzahl der zurückgegebenen Zeilen, sondern lediglich die Anzahl der bislang mit oci_fetch() oder ähnlichen Funktionen abgerufenen Zeilen. Um die tatsächliche Anzahl von SELECT-Ergebnissen zu ermitteln, müsste man alle Zeilen zunächst abrufen.

Da ocirowcount() ein Alias ist, der seit PHP 8.0 als veraltet gilt (bzw. in zukünftigen Versionen entfernt werden kann), sollte in neuem Code grundsätzlich oci_num_rows() verwendet werden.

Parameter

Name Typ Default Beschreibung
$statement Pflicht resource Ein gültiges OCI8-Statement-Handle, das zuvor mit oci_parse() erzeugt und mit oci_execute() ausgeführt wurde.

Rückgabewert

Typ
int|false
Beschreibung
Gibt die Anzahl der betroffenen Zeilen als Integer zurück. Bei einem Fehler wird false zurückgegeben.

Beispiele

Anzahl der durch UPDATE betroffenen Zeilen ermitteln

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$sql = "UPDATE mitarbeiter SET gehalt = gehalt * 1.05 WHERE abteilung = 'IT'";
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);

$anzahl = ocirowcount($stmt);
echo "Betroffene Zeilen: " . $anzahl . PHP_EOL;

oci_free_statement($stmt);
oci_close($conn);
?>
Betroffene Zeilen: 12

Besser: Verwendung des nicht-veralteten oci_num_rows()

<?php
$conn = oci_connect('benutzer', 'passwort', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$sql = "DELETE FROM protokoll WHERE erstellt_am &lt; SYSDATE - 90";
$stmt = oci_parse($conn, $sql);
oci_execute($stmt);

// Empfohlen: oci_num_rows() statt ocirowcount()
$anzahl = oci_num_rows($stmt);
echo "Gelöschte Einträge: " . $anzahl . PHP_EOL;

oci_free_statement($stmt);
oci_close($conn);
?>
Gelöschte Einträge: 47

// Wichtig · Fallstricke

Veraltet (Deprecated): ocirowcount() ist ein Alias von oci_num_rows() und sollte in neuem Code nicht mehr verwendet werden. Nutze stattdessen direkt oci_num_rows(), um Kompatibilitätsprobleme mit zukünftigen PHP-Versionen zu vermeiden.

Achtung bei SELECT-Anweisungen: Die Funktion gibt bei SELECT-Statements nicht die Gesamtzahl der Ergebniszeilen zurück, sondern nur die Anzahl der bereits abgerufenen Zeilen. Dieses Verhalten kann zu Missverständnissen führen.