Maison > développement back-end > tutoriel php > Comment puis-je récupérer en toute sécurité des données de MySQL à l'aide d'instructions préparées en PHP ?

Comment puis-je récupérer en toute sécurité des données de MySQL à l'aide d'instructions préparées en PHP ?

Susan Sarandon
Libérer: 2024-12-20 13:07:10
original
349 Les gens l'ont consulté

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

Sécuriser les instructions préparées MySQL en PHP

Lorsque vous travaillez avec des requêtes SQL en PHP, il est crucial de donner la priorité à la sécurité en utilisant des instructions préparées. Voici comment créer une instruction préparée sécurisée pour récupérer des colonnes à l'aide des entrées des paramètres d'URL :

Utiliser MySQL amélioré (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();
Copier après la connexion

Vous pouvez également utiliser cette fonction d'assistance pour simplifier le liaison de tableaux associatifs :

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);
}
Copier après la connexion

Pour utiliser it :

$stmt->store_result();

$resultrow = array();
stmt_bind_assoc($stmt, $resultrow);

while ($stmt->fetch()) {
    print_r($resultrow);
}
Copier après la connexion

Amélioration des performances

Les instructions préparées améliorent les performances en minimisant le besoin de réanalyse et de replanification des requêtes. Cependant, l’impact sur la vitesse peut ne pas être significatif s’il n’est utilisé que quelques fois sur une seule page. Néanmoins, cela reste une pratique recommandée pour accroître la sécurité et la protection contre les vulnérabilités d’injection SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal