Warum löst mein PHP-Code den Fehler „Call to a Member Function Prepare() on a Non-Object' aus und wie kann ich ihn beheben?

Barbara Streisand
Freigeben: 2024-11-24 05:45:11
Original
714 Leute haben es durchsucht

Why does my PHP code throw a

Aufruf einer Mitgliedsfunktion „prepare()“ für ein Nicht-Objekt

Ihr PHP-Code löst eine Fehlermeldung aus, die darauf hinweist, dass Sie versuchen, auf die Methode „prepare()“ zuzugreifen eines Objekts, das nicht existiert. Sehen wir uns den bereitgestellten Code genauer an, um die Ursache dieses Fehlers zu ermitteln:

$DBH = new mysqli("host", "test", "123456", "dbname");

function selectInfo($limit, $offset) {
    $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
    $stmt->bind_param("ii", $limit, $offset);
    $stmt->execute();
}

selectInfo();
Nach dem Login kopieren

Der Fehler hat seinen Ursprung im Bereich der Variablen $DBH. Innerhalb der Funktion selectInfo() versuchen Sie, auf $DBH zuzugreifen, ohne dessen Gültigkeitsbereich anzugeben. Da $DBH nicht innerhalb der Funktion definiert ist, kann nicht direkt darauf zugegriffen werden.

Um dieses Problem zu beheben, haben Sie mehrere Möglichkeiten:

1. Verwenden Sie das globale Schlüsselwort:

function selectInfo($limit, $offset) {
    global $DBH;

    $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
    $stmt->bind_param("ii", $limit, $offset);
    $stmt->execute();
}
Nach dem Login kopieren

2. Übergeben Sie $DBH als Funktionsparameter:

function selectInfo($DBH, $limit, $offset) {
    $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
    $stmt->bind_param("ii", $limit, $offset);
    $stmt->execute();
}
Nach dem Login kopieren

3. Erstellen Sie eine Funktion zum Abrufen von $DBH:

function getDBH() {
    static $DBH = null;

    if (is_null($DBH)) {
        $DBH = new mysqli("host", "test", "123456", "dbname");
    }

    return $DBH;
}

function selectInfo($limit, $offset) {
    $DBH = getDBH();

    $stmt = $DBH->prepare("SELECT * FROM information LIMIT ?,?");
    $stmt->bind_param("ii", $limit, $offset);
    $stmt->execute();
}
Nach dem Login kopieren

Durch die Implementierung einer dieser Optionen legen Sie den richtigen Bereich für $DBH innerhalb der Funktion selectInfo() fest, sodass dieser auf die erforderliche Datenbank zugreifen kann Verbindung.

Das obige ist der detaillierte Inhalt vonWarum löst mein PHP-Code den Fehler „Call to a Member Function Prepare() on a Non-Object' aus und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage