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
Linda HamiltonOriginal
2024-12-25 15:15:16910Durchsuche

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);

2. Anweisungsausführung:

$stmt->execute();

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();

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();
}

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!

Stellungnahme:
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