MySQLi-Fehlerausbreitung: Probleme mit mysqli_fetch_array() und Bind_param() lösen
Das Problem:
Fehler wie „Aufruf einer Mitgliedsfunktion bind_param() auf a non-object“ und „mysqli_fetch_array(): Argument #1 muss vom Typ mysqli_result sein“ können auftreten, wenn MySQLi in bestimmten Umgebungen verwendet wird. Dieses Problem ist typischerweise auf eine fehlende Konfiguration für die MySQL-Fehlerberichterstattung in PHP zurückzuführen.
So lösen Sie:
1. Aktivieren Sie die MySQL-Fehlerberichterstattung
Aktivieren Sie zunächst die MySQL-Fehlerberichterstattung in PHP, indem Sie die folgende Zeile hinzufügen, bevor Sie die MySQLi-Verbindung herstellen:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Diese Konfiguration stellt sicher, dass alle MySQL-Fehler behoben werden als PHP-Ausnahmen propagiert, wodurch sie sichtbar und umsetzbar sind.
2. Verwenden Sie vorbereitete Anweisungen
Ersetzen Sie alle expliziten PHP-Variablen in der SQL-Abfrage durch Fragezeichen und führen Sie die Abfrage mithilfe einer vorbereiteten Anweisung aus. Dieser Ansatz hilft, Syntaxfehler und Injektionsschwachstellen zu verhindern.
// Example using MySQLi prepared statements $mysqli = new mysqli(...) or throw new Exception('Could not connect to DB'); $query = 'SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?'; $stmt = $mysqli->prepare($query); $stmt->bind_param('i', $cur_id); $stmt->execute(); $stmt->bind_result($uid, $desc);
Zusätzliche Tipps
Das obige ist der detaillierte Inhalt vonWie behebt man die Fehler „Aufruf einer Mitgliedsfunktion bind_param() für ein Nicht-Objekt' und „mysqli_fetch_array(): Argument Nr. 1 muss vom Typ mysqli_result sein' in MySQLi?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!