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.
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.
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!