Erstellen sicherer vorbereiteter MySQL-Anweisungen in PHP
Vorbereitete Anweisungen bieten erhöhte Sicherheit und potenzielle Leistungsverbesserungen für Datenbankabfragen. Hier ist eine umfassende Anleitung zum Erstellen sicherer vorbereiteter MySQL-Anweisungen in PHP mithilfe der Eingabe von URL-Parametern.
Vorbereitete Anweisungen erstellen
Instanziieren Sie eine MySQLi-Verbindung und bereiten Sie eine Anweisung mit mysqli_prepare vor( ):
$db = new mysqli("host","user","pw","database"); $stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC");
Verbindlich Parameter
Verwenden Sie mysqli_stmt_bind_param(), um Eingabeparameterwerte an Anweisungsplatzhalter zu binden:
$userid = intval($_GET['userid']); $category = intval($_GET['category']); $stmt->bind_param('ii', $userid, $category);
Daten ausführen und abrufen
Führen Sie die aus vorbereitete Anweisung und rufen Sie die Ergebnisse mit mysqli_stmt_execute() und ab mysqli_stmt_store_result():
$stmt->execute(); $stmt->store_result();
Verwenden Sie mysqli_stmt_bind_result(), um die Spaltennamen an Variablen zu binden und über die Ergebnisse zu iterieren:
$stmt->bind_result($column1, $column2, $column3); while ($stmt->fetch()) { echo "col1=$column1, col2=$column2, col3=$column3 \n"; }
Erweiterte Flexibilität für assoziative Arrays
Für Abfragen, die mehrere Spalten zurückgeben (z. B. SELECT *) können Sie die Funktion stmt_bind_assoc() verwenden, um die Ergebnisse an ein assoziatives Array zu binden:
$resultrow = array(); stmt_bind_assoc($stmt, $resultrow); while ($stmt->fetch()) { print_r($resultrow); }
Leistungsverbesserungen
Bei der Verwendung von Prepared Während Anweisungen die Leistung bei mehreren Ausführungen derselben Abfrage steigern können, rechtfertigt der Aufwand für die Erstellung und Vorbereitung der Anweisung möglicherweise nicht, sie nur für drei oder vier Ausführungen zu verwenden Ausführungen.
Indem Sie diese Schritte befolgen, können Sie sicherstellen, dass Ihre MySQL-Abfragen sicher und effizient sind.
Das obige ist der detaillierte Inhalt vonWie kann ich mit URL-Parametern sicher MySQL-vorbereitete Anweisungen in PHP erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!