Heim > Artikel > Backend-Entwicklung > Warum kommt es in PHP zum „Aufruf einer Member-Funktion „prepare()' für ein Nicht-Objekt' und wie kann ich das Problem beheben?
Aufruf der Member-Funktion „prepare()“ für ein Nicht-Objekt: PHP-Hilfe
Problem:
Der Fehler „Aufruf einer Member-Funktion Prepare() für ein Nicht-Objekt“ tritt auf, wenn versucht wird, eine Methode für ein Objekt aufzurufen, das dies nicht tut existieren.
Ursache:
Der bereitgestellte Codeausschnitt initialisiert die Variable $DBH als neues MySQLi-Verbindungsobjekt, kann sie jedoch nicht als Parameter übergeben oder als deklarieren eine globale Variable innerhalb der Funktion selectInfo(). Daher kann die Funktion nicht auf das Objekt zugreifen und der Fehler wird ausgegeben.
Lösung:
Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht:
Verwenden Sie das Global Schlüsselwort:
function selectInfo($limit, $offset){ global $DBH; $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
Übergeben Sie die Verbindung als Parameter:
function selectInfo(MySQLi $DBH, $limit, $offset){ $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
Erstellen Sie eine Funktion zum Abrufen der Datenbankverbindung:
function getDBH(){ static $DBH = null; if (is_null($DBH)) { $DBH = new mysqli(...); } return $DBH; }
Funktion selectInfo($limit, $offset){
$DBH = getDBH(); $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
}
Erstellen Sie eine Datenbank-Wrapper-Klasse:
class Database { private $conn; public function __construct(){ $this->conn = new mysqli(...); } public function selectInfo($limit, $offset){ $stmt = $this->conn->prepare("SELECT * FROM information LIMIT ?,?"); }
Verwenden Sie a Vorgefertigte Bibliothek oder Framework:
Das obige ist der detaillierte Inhalt vonWarum kommt es in PHP zum „Aufruf einer Member-Funktion „prepare()' für ein Nicht-Objekt' und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!