Sichere vorbereitete Anweisungen in PHP für MySQL
Bei der Arbeit mit MySQL und PHP ist die Verwendung vorbereiteter Anweisungen von entscheidender Bedeutung, um die Sicherheit Ihrer Datenbank zu gewährleisten Abfragen. Vorbereitete Anweisungen schützen vor SQL-Injection-Angriffen, indem sie die SQL-Anweisung von der vom Benutzer bereitgestellten Eingabe trennen.
Erstellen einer sicheren vorbereiteten Anweisung
Um eine sichere vorbereitete Anweisung zu erstellen, Ich verwende das folgende Code-Snippet:
$db = new mysqli("host", "user", "pw", "database"); $stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC"); $stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category']));
Erläuterung des Code
Daten abrufen
Nachdem Sie die Anweisung vorbereitet haben, können Sie sie ausführen, Daten abrufen und die Ergebnisse iterieren:
$stmt->execute(); $stmt->store_result(); $stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; }
Assoziative Arrays zur Vereinfachung
Zum Abrufen von Daten als ein assoziatives Array (z. B. für SELECT *-Abfragen), können Sie die folgende Funktion verwenden:
function stmt_bind_assoc(&$stmt, &$out) { $data = mysqli_stmt_result_metadata($stmt); $fields = array(); $out = array(); $fields[0] = $stmt; $count = 1; while ($field = mysqli_fetch_field($data)) { $fields[$count] = &$out[$field->name]; $count++; } call_user_func_array(mysqli_stmt_bind_result, $fields); }
Mit dieser Funktion können Sie Ergebnisse an ein assoziatives Array binden, was die Arbeit damit in Ihrem Code erleichtert:
$stmt->store_result(); $resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
Überlegungen zur Leistung
Während vorbereitete Anweisungen darauf ausgelegt sind, die Leistung zu verbessern, ist die Verwendung von Wenn Sie sie ein paar Mal auf einer Seite ausführen, ergeben sich möglicherweise keine nennenswerten Vorteile. Wenn Ihre Anwendung jedoch häufig Datenbankoperationen ausführt, kann die Vorbereitung von Anweisungen zu spürbaren Verbesserungen der Antwortzeiten führen.
Das obige ist der detaillierte Inhalt vonWie kann ich vorbereitete Anweisungen in PHP sicher verwenden, um eine MySQL-Datenbank abzufragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!