MySQLI :: $ Info ist eine schreibgeschützte Eigenschaft, die die detaillierten Informationen zurückgibt, die von der kürzlich ausgeführten Abfrage erstellt wurden. Es wird normalerweise verwendet, um Informationen wie die Anzahl der betroffenen Zeilen, Warnungen usw. nach der Aktualisierung , Löschen oder Einfügen ... in der doppelten Taste -Update -Anweisung anzugeben.
$mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
echo $mysqli->info;
Diese Eigenschaft ist erst nach einer bestimmten Abfrageart gültig und gibt nur aussagekräftige Informationen zurück, nachdem die Abfrage erfolgreich ausgeführt wurde.
Dies ist das häufigste Problem. MySQLI :: $ Info wird erst nach bestimmten bestimmten Abfragen festgelegt, z. B. die Aktualisierungsanweisung . Wenn die Abfrage keine zusätzlichen Informationen erstellt, gibt $ mysqli-> Info NULL oder leere Zeichenfolge zurück.
Lösung:
Überprüfen Sie vor der Verwendung den Abfragetyp, um die Anwendbarkeit zu bestätigen. Es wird auch empfohlen, es in Verbindung mit $ mysqli-> betroffen zu verwenden, um sicherzustellen, dass Sie das richtige Feedback erhalten haben.
$result = $mysqli->query("UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY");
if ($result) {
echo "Anzahl der betroffenen Zeilen: " . $mysqli->affected_rows . "\n";
echo "Weitere Informationen: " . ($mysqli->info ?? 'Keine Informationen') . "\n";
} else {
echo "Abfrage fehlgeschlagen: " . $mysqli->error;
}
Wenn die Abfrage nicht ausgeführt wird, existiert MySQLI :: $ Info noch, aber der Inhalt ist nicht vertrauenswürdig. Wenn Sie die Abfrageergebnisse nicht beurteilen und direkt auf sie zugreifen, erhalten Sie möglicherweise bedeutungslose oder falsche Informationen.
Lösung:
Beurteilen Sie immer, ob die Abfrage zuerst erfolgreich ist, und besuchen Sie dann MySQLI :: $ Info .
if ($mysqli->query($sql) === false) {
echo "Fehler: " . $mysqli->error;
} else {
echo "Information: " . $mysqli->info;
}
Wenn das für die Datenbankverbindung festgelegte Zeichen falsch eingestellt ist, kann MySQLI :: $ Info verstümmelte oder unvollständige Informationen zurückgeben.
Lösung:
Stellen Sie sicher, dass der richtige Zeichensatz sofort nach der Verbindung zur Datenbank festgelegt wird, z. B.:
$mysqli->set_charset('utf8mb4');
Dies stellt sicher, dass die von MySQLI :: $ Info zurückgegebene Zeichenfolge korrekt angezeigt wird.
Mysqli :: $ Info ist das Ergebnis der letzten erfolgreichen Abfrage. Wenn eine andere Abfrage in der Mitte ausgeführt wird, kann der Zugriff auf die Eigenschaft die Ergebnisse der vorherigen Abfrage zurückgeben, was zu Missverständnissen führt.
Lösung:
Stellen Sie sicher, dass vor jedem Zugriff auf MySQLI :: $ Info keine anderen irrelevanten Abfragen eingefügt werden oder erst unmittelbar nach den entsprechenden Fragen zugegriffen werden.
Verwenden Sie Ausnahmebehandlung : Kombiniert mit MySQLI_Report (Mysqli_Report_error | mysqli_report_strict) kann es früher Abfragefehler aufnehmen und ein Missverständnis von Fehlerinformationen vermeiden.
Abfrage Rückgabewert Urteilsvermögen : Nicht nur MySQLI :: $ Info Richter Abfragergebnisse, sondern es ist auch am besten, betroffene und Fehler für ein umfassendes Urteilsvermögen zu kombinieren.
Dokumentenreferenz : Erfahren Sie mehr über die Beschreibung der offiziellen Dokumentation von MySQLI :: $ Info und verstehen Sie die Szenarien und Einschränkungen, auf die sie gilt.
Zusammenfassend ist MySQLI :: $ Info eine praktische, aber falsch auswendbare Eigenschaft. Beurteilen Sie die Abfrageergebnisse korrekt und verwenden Sie sie in Kombination mit anderen MySQLI -Attributen, die Fehler während der Verwendung effektiv vermeiden können.
$mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->set_charset('utf8mb4');
$sql = "UPDATE users SET status = 'active' WHERE last_login > NOW() - INTERVAL 30 DAY";
if ($mysqli->query($sql) === false) {
echo "查询Fehler: " . $mysqli->error;
} else {
echo "Anzahl der betroffenen Zeilen: " . $mysqli->affected_rows . "\n";
echo "Weitere Informationen: " . ($mysqli->info ?? 'Keine Informationen') . "\n";
}