Sichern Sie vorbereitete MySQL-Anweisungen in PHP
Bei der Arbeit mit SQL-Abfragen in PHP ist es wichtig, der Sicherheit durch die Verwendung vorbereiteter Anweisungen Priorität einzuräumen. So erstellen Sie eine sichere vorbereitete Anweisung zum Abrufen von Spalten mithilfe der Eingabe von URL-Parametern:
Verwenden Sie MySQL Improved (MySQLi):
$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'])); $stmt->execute(); $stmt->store_result(); $stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; } $stmt->close();
Alternativ können Sie diese Hilfsfunktion verwenden, um die zu vereinfachen Bindung assoziativer Arrays:
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); }
Zu verwenden it:
$stmt->store_result(); $resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
Leistungssteigerung
Vorbereitete Anweisungen verbessern die Leistung, indem sie die Notwendigkeit einer erneuten Analyse und Neuplanung von Abfragen minimieren. Allerdings ist die Auswirkung auf die Geschwindigkeit möglicherweise nicht signifikant, wenn es nur ein paar Mal auf einer einzelnen Seite verwendet wird. Dennoch bleibt es eine empfohlene Vorgehensweise für mehr Sicherheit und Schutz vor SQL-Injection-Schwachstellen.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe vorbereiteter Anweisungen in PHP sicher Daten aus MySQL abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!