„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie nutzt man vorbereitete Anweisungen in MySQL effektiv mit PHP?

Wie nutzt man vorbereitete Anweisungen in MySQL effektiv mit PHP?

Veröffentlicht am 21.12.2024
Durchsuche:708

How to Effectively Use Prepared Statements in MySQL with PHP?

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 korrigieren Sie das Problem:

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

Stellen Sie sicher, dass Sie eine haben Gültige Verbindung zur Datenbank, bevor Sie fortfahren.

Bindungsparameter

Vorbereitet Anweisungen verwenden 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 robustere und effizientere SQL-Abfragen schreiben.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3