Start · Sprachen · PHP · Referenz · mysqli_info

mysqli_info

Funktion

Gibt einen beschreibenden String über die zuletzt ausgeführte MySQL-Abfrage zurück, z. B. Anzahl geänderter oder eingefügter Zeilen.

seit PHP 5.0.0 Kategorie: db

Signatur

mysqli_info(mysqli $mysql): string|null

Beschreibung

mysqli_info() liefert einen kurzen Informationstext über die zuletzt ausgeführte Datenbankabfrage. Der zurückgegebene String enthält statistische Angaben wie die Anzahl betroffener Zeilen, Duplikate oder Warnungen – je nach Art der Abfrage.

Die Funktion ist nützlich, wenn man nach einem INSERT INTO ... SELECT, INSERT INTO ... VALUES (Mehrfach-Inserts), LOAD DATA INFILE, ALTER TABLE oder UPDATE genaue Rückmeldungen benötigt, die über mysqli_affected_rows() hinausgehen. Sie eignet sich besonders für Logging- oder Debug-Zwecke.

Nicht jede SQL-Anweisung erzeugt einen Info-String. Bei einfachen SELECT-Abfragen oder Abfragen, für die MySQL keinen Infotext bereitstellt, gibt die Funktion null zurück.

Das Äquivalent in der objektorientierten Schreibweise ist die Eigenschaft mysqli::$info.

Parameter

Name Typ Default Beschreibung
$mysql Pflicht mysqli Ein gültiges mysqli-Verbindungsobjekt, das mit mysqli_connect() oder new mysqli() erstellt wurde.

Rückgabewert

Typ
string|null
Beschreibung
Gibt einen String mit Informationen zur zuletzt ausgeführten Abfrage zurück, z. B. "Records: 100 Duplicates: 0 Warnings: 0". Gibt null zurück, wenn für die letzte Abfrage kein Infotext verfügbar ist.

Beispiele

Informationstext nach einem Mehrfach-INSERT abrufen

<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'testdb');

if ($mysqli->connect_errno) {
    die('Verbindungsfehler: ' . $mysqli->connect_error);
}

$mysqli->query("
    INSERT INTO users (name, email) VALUES
    ('Alice', 'alice@example.com'),
    ('Bob',   'bob@example.com'),
    ('Alice', 'alice@example.com')
");

$info = mysqli_info($mysqli);
echo $info;

$mysqli->close();
Records: 3 Duplicates: 0 Warnings: 0

Informationstext nach einem UPDATE abrufen

<?php
$mysqli = new mysqli('localhost', 'user', 'password', 'testdb');

if ($mysqli->connect_errno) {
    die('Verbindungsfehler: ' . $mysqli->connect_error);
}

$mysqli->query("UPDATE products SET price = price * 1.1 WHERE category = 'electronics'");

$info = mysqli_info($mysqli);
if ($info !== null) {
    echo 'Abfrage-Info: ' . $info . PHP_EOL;
} else {
    echo 'Kein Infotext verfügbar.' . PHP_EOL;
}

echo 'Betroffene Zeilen: ' . mysqli_affected_rows($mysqli) . PHP_EOL;

$mysqli->close();
Abfrage-Info: Rows matched: 42 Changed: 42 Warnings: 0 Betroffene Zeilen: 42

// Wichtig · Fallstricke

Hinweis zur Verfügbarkeit: mysqli_info() liefert nur für bestimmte Anweisungstypen einen String: INSERT INTO ... SELECT, INSERT INTO ... VALUES (...),(...), LOAD DATA INFILE, ALTER TABLE und UPDATE. Für alle anderen Abfragen, insbesondere einfache SELECT-Statements, wird null zurückgegeben.

OOP-Äquivalent: Statt der prozeduralen Funktion kann die Eigenschaft $mysqli->info verwendet werden, was in objektorientierten Projekten bevorzugt werden sollte.

Nicht für Produktions-Parsing geeignet: Das Format des zurückgegebenen Strings ist nicht normiert und kann je nach MySQL/MariaDB-Version variieren. Er sollte daher nur für Logging- und Debug-Ausgaben genutzt und nicht per Regex für Geschäftslogik geparst werden.