Signatur
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
"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();
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();
// 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.