Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mithilfe vorbereiteter Anweisungen in PHP sicher Daten aus MySQL abrufen?

Wie kann ich mithilfe vorbereiteter Anweisungen in PHP sicher Daten aus MySQL abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-12-20 13:07:10388Durchsuche

How Can I Securely Retrieve Data from MySQL Using Prepared Statements in PHP?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn