Heim > Datenbank > MySQL-Tutorial > Warum erhalte ich die Fehlermeldung „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt', wenn ich mit Mysqli vorbereitete Anweisungen verwende?

Warum erhalte ich die Fehlermeldung „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt', wenn ich mit Mysqli vorbereitete Anweisungen verwende?

Linda Hamilton
Freigeben: 2024-12-25 15:15:16
Original
907 Leute haben es durchsucht

Why Am I Getting

Fallstricke bei der Verwendung von Mysqli-vorbereiteten Anweisungen

Beim Versuch, vorbereitete Anweisungen zu verwenden, stieß ein Entwickler auf Herausforderungen und erhielt die Fehlermeldung „Schwerwiegender Fehler: Aufruf zur Ausführung einer Mitgliedsfunktion.“ () auf einem Nicht-Objekt. Dieser Artikel befasst sich mit der Grundursache dieses Problems und bietet eine umfassende Anleitung zur ordnungsgemäßen Verwendung vorbereiteter Anweisungen in Mysqli.

Ursprung des Fehlers

Das Problem entsteht durch das Auslassen der Parameterbindung bevor die vorbereitete Anweisung ausgeführt wird. Mysqli erfordert die Bindung von Parametern an Anwendungsvariablen über die Funktion mysqli_stmt_bind_param(), bevor die Anweisung ausgeführt wird.

Vorbereitete Anweisungen implementieren

1. Parameterbindung:

$name = 'one';
$age  = 1;

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");

// bind parameters. Refer to documentation for appropriate data types (e.g., 'si' for string and integer).
$stmt->bind_param('si', $name, $age);
Nach dem Login kopieren

2. Anweisungsausführung:

$stmt->execute();
Nach dem Login kopieren

3. Nachfolgende Parameterbindung und -ausführung:

Zum Einfügen mehrerer Zeilen mit unterschiedlichen Werten muss der Parameterbindungsschritt vor jeder Ausführung wiederholt werden.

Beispiel:

$name = 'two';
$age  = 2;

// Update bound parameters
$stmt->bind_param('si', $name, $age);

// Execute with different values
$stmt->execute();
Nach dem Login kopieren

4. Vollständiges Beispiel:

$mysqli = new mysqli("localhost", "root", "root", "test");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
}

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
try {
    // Insert one row
    $name = 'one';
    $age  = 1;
    $stmt->bind_param('si', $name, $age);
    $stmt->execute();

    // Insert another row with different values
    $name = 'two';
    $age  = 2;
    $stmt->bind_param('si', $name, $age);
    $stmt->execute();
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt', wenn ich mit Mysqli vorbereitete Anweisungen verwende?. 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