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 ?
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'");
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>
Ensuite, initialisez un objet d'instruction préparé :
<code class="php">$stmt = $db_usag->prepare($sql);</code>
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>
Exécutez l'instruction préparée :
<code class="php">$stmt->execute();</code>
Vérifiez les erreurs :
<code class="php">if ($stmt->error) { echo "FAILURE!!! " . $stmt->error; }</code>
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>
Enfin, fermez l'objet instruction :
<code class="php">$stmt->close();</code>
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!