Vorbereitete MySQL-Anweisungen verwenden
Bei der Verwendung vorbereiteter Anweisungen mit MySQL ist es wichtig, die Parameter vor der Ausführung der Abfrage korrekt zu binden.
Fehler-Debugging
Die Der bereitgestellte Code stößt auf den Fehler „Aufruf einer Mitgliedsfunktion „execute()“ für ein Nicht-Objekt“, da keine Parameterbindung durchgeführt wurde. Gemäß der mysqli_prepare-Dokumentation müssen Parametermarkierungen vor der Ausführung mit mysqli_stmt_bind_param gebunden werden.
Vollständiges Beispiel mit Fehlerbehandlung:
Das Folgende ist ein vollständigeres Beispiel, das Folgendes enthält: Parameterbindung, Fehlerbehandlung und demonstriert das Einfügen und Abrufen von Daten mithilfe von Prepared Anweisungen:
<?php // Establish database connection $mysqli = new mysqli("localhost", "root", "root", "test"); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: " . $mysqli->connect_error; exit; } // Prepare insert statement $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)"); if (!$stmt) { echo "Error preparing statement: " . $mysqli->error; exit; } // Bind parameters and insert one row $name = 'One'; $age = 1; $stmt->bind_param('si', $name, $age); $stmt->execute(); if ($stmt->errno) { echo "Error executing insert: " . $stmt->error; exit; } // Insert another row with different values $name = 'Two'; $age = 2; $stmt->bind_param('si', $name, $age); $stmt->execute(); if ($stmt->errno) { echo "Error executing insert: " . $stmt->error; exit; } // Prepare select statement $stmt = $mysqli->prepare("SELECT name, age FROM users"); if (!$stmt) { echo "Error preparing statement: " . $mysqli->error; exit; } // Execute select statement and fetch results $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "{$row['name']} is {$row['age']} years old<br>"; } } // Close statement and connection $stmt->close(); $mysqli->close(); ?>
Dieser Code behandelt Fehler während der Vorbereitung, Ausführung und des Ergebnisabrufs von Anweisungen und bietet eine robustere Demonstration der Verwendung vorbereiteter Anweisungen.
Das obige ist der detaillierte Inhalt vonWarum gibt meine vorbereitete mysqli-Anweisung „Aufruf einer Mitgliedsfunktion „execute()' für ein Nicht-Objekt' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!