Maison > base de données > tutoriel mysql > Comment les instructions préparées peuvent-elles améliorer la sécurité et les performances dans les requêtes PHP UPDATE ?

Comment les instructions préparées peuvent-elles améliorer la sécurité et les performances dans les requêtes PHP UPDATE ?

Mary-Kate Olsen
Libérer: 2024-10-29 16:29:02
original
947 Les gens l'ont consulté

How can prepared statements enhance security and performance in PHP UPDATE queries?

Instructions préparées pour les requêtes de mise à jour

En PHP, la préparation des instructions est cruciale pour améliorer la sécurité et les performances des requêtes. Les instructions préparées permettent des requêtes paramétrées, où des espaces réservés (?) sont utilisés au lieu de l'insertion directe de variables.

Exemple de requêtes UPDATE

Considérez la requête mysqli suivante qui met à jour les données dans la table Candidat :

$db_usag->query("UPDATE Applicant SET phone_number ='$phone_number', 
street_name='$street_name', city='$city', county='$county', zip_code='$zip_code', day_date='$day_date', month_date='$month_date',
 year_date='$year_date' WHERE account_id='$account_id'");
Copier après la connexion

Pour préparer cette instruction, remplacez toutes les affectations de variables par des espaces réservés :

<code class="php">$sql = "UPDATE Applicant SET phone_number=?, street_name=?, city=?, county=?, 
zip_code=?, day_date=?, month_date=?, year_date=? WHERE account_id=?";</code>
Copier après la connexion

Ensuite, initialisez un objet d'instruction préparé :

<code class="php">$stmt = $db_usag->prepare($sql);</code>
Copier après la connexion

Liez les paramètres à l'instruction à l'aide de la méthode bind_param(). Spécifiez les types de données des paramètres en conséquence :

<code class="php">// Assuming the date and account_id parameters are integers `d` and the rest are strings `s`
$stmt->bind_param('sssssdddd', $phone_number, $street_name, $city, $county, 
$zip_code, $day_date, $month_date, $year_date, $account_id);</code>
Copier après la connexion

Exécutez l'instruction préparée :

<code class="php">$stmt->execute();</code>
Copier après la connexion

Vérifiez les erreurs :

<code class="php">if ($stmt->error) {
    echo "FAILURE!!! " . $stmt->error;
}</code>
Copier après la connexion

Si l'exécution a été réussi, récupérez le nombre de lignes affectées :

<code class="php">echo "Updated {$stmt->affected_rows} rows";</code>
Copier après la connexion

Enfin, fermez l'objet instruction :

<code class="php">$stmt->close();</code>
Copier après la connexion

En utilisant des instructions préparées, vous pouvez éviter les attaques par injection potentielles et améliorer l'efficacité de vos requêtes de base de données.

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