0 Pluspunkte 0 Minuspunkte
Ich habe ein Programm das mit MySQLi daten aus einer MySQL Datenbank verarbeitet. Alle Abfragen sind normale MySQLi Queries. Wie mache ich daraus MySQLi Abfragen mit Prepared Statements?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Hier ist ein einfaches Beispiel für eine MySQLi-Abfrage ohne prepared statements.

$benutzername = "john_doe";
$passwort = "geheimes_passwort";

$sql = "SELECT * FROM benutzer WHERE benutzername='$benutzername' AND passwort='$passwort'";
$result = mysqli_query($verbindung, $sql);

// Hier geht es weiter mit der Verarbeitung der Abfrageergebnisse...

Und hier ist dasselbe Beispiel, umgewandelt in ein prepared statement.

$benutzername = "john_doe";
$passwort = "geheimes_passwort";

// Verbindung herstellen
$verbindung = mysqli_connect("localhost", "benutzername", "passwort", "datenbank");

// Prepared statement erstellen
$stmt = mysqli_prepare($verbindung, "SELECT * FROM benutzer WHERE benutzername=? AND passwort=?");

// Parameter binden
mysqli_stmt_bind_param($stmt, "ss", $benutzername, $passwort);

// Statement ausführen
mysqli_stmt_execute($stmt);

// Ergebnisse abrufen
$result = mysqli_stmt_get_result($stmt);

// Hier geht es weiter mit der Verarbeitung der Abfrageergebnisse...

// Statement schließen
mysqli_stmt_close($stmt);

// Verbindung schließen
mysqli_close($verbindung);

Ein prepared statement wird mit der mysqli_prepare Funktion erstellt, wobei Platzhalter (?) für die Parameter verwendet werden. Die Parameter werden mit mysqli_stmt_bind_param an das Statement gebunden. Der Parameter "ss" gibt an, dass beide Parameter vom Typ String sind. Die Reihenfolge der Parameter muss mit der Reihenfolge der Platzhalter im Statement übereinstimmen. Das Statement wird mit mysqli_stmt_execute ausgeführt. Das Ergebnis wird mit mysqli_stmt_get_result abgerufen, um es in einem Objekt zu speichern.

von (532 Punkte)