Erste Schritte mit vorbereiteten Anweisungen in MySQL
Vorbereitete Anweisungen sind ein wesentliches Werkzeug zum Schreiben sicherer und effizienter SQL-Abfragen. In diesem Artikel erfahren Sie, wie Sie vorbereitete Anweisungen mit mysqli, der MySQLi-Erweiterung in PHP, verwenden.
Syntaxfehler: Nicht-Objekt-Ausführung
Der Fehler, auf den Sie stoßen „Schwerwiegender Fehler: Aufruf einer Mitgliedsfunktionexecute() für ein Nicht-Objekt“ weist normalerweise darauf hin, dass die Variable $stmt nicht ordnungsgemäß initialisiert wurde oder ein Objekt ist. So beheben Sie das Problem:
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
Stellen Sie sicher, dass Sie eine gültige Verbindung zur Datenbank haben, bevor Sie fortfahren.
Bindungsparameter
Vorbereitete Anweisungen Verwenden Sie Parametermarkierungen (z. B. ?), um Eingabewerte darzustellen. Diese Werte müssen vor der Ausführung der Anweisung an PHP-Variablen gebunden werden. Hier ist ein Beispiel:
$name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
In diesem Beispiel binden wir den Namensparameter als Zeichenfolge ('s') und den Altersparameter als Ganzzahl ('i').
Ausführen der Anweisung
Sobald die Parameter gebunden sind, können Sie die vorbereitete ausführen Anweisung:
$stmt->execute();
Fehlerbehandlung
Vorbereitete Anweisungen bieten eine bessere Fehlerbehandlung als direkte SQL-Abfragen. Verwenden Sie die Methode mysqli_stmt::error, um Fehlermeldungen abzurufen:
if ($stmt->error) { die("Error: " . $stmt->error); }
Vollständiges Beispiel
Hier ist ein vollständiges Beispiel für das Einfügen, Auswählen und Behandeln von Fehlern:
// Establish connection $mysqli = new mysqli("localhost", "root", "root", "test"); // Prepare and bind parameters $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)"); $stmt->bind_param('si', $name, $age); // Insert multiple rows $name = 'one'; $age = 1; $stmt->execute(); $name = 'two'; $age = 2; $stmt->execute(); // Prepare and execute select statement $stmt = $mysqli->prepare("SELECT * FROM users"); $stmt->execute(); // Bind result $result = $stmt->get_result(); // Process results while ($row = $result->fetch_assoc()) { echo $row['name'] . ", " . $row['age'] . "
\n"; } // Handle errors if ($stmt->error) { die("Error: " . $stmt->error); }
Durch die Verwendung vorbereiteter Anweisungen können Sie SQL-Injection-Angriffe verhindern und robusteres und effizienteres SQL schreiben Abfragen.
Das obige ist der detaillierte Inhalt vonWie nutzt man vorbereitete Anweisungen in MySQL effektiv mit PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!