Comment utiliser les instructions préparées PHP pour les mises à jour sécurisées de la base de données ?

Susan Sarandon
Libérer: 2024-10-21 19:58:29
original
139 Les gens l'ont consulté

How to Use PHP Prepared Statements for Secure Database Updates?

Instructions préparées PHP pour des mises à jour sécurisées de la base de données

Éviter les injections SQL

Lors de l'exécution de requêtes de base de données, les instructions préparées sont essentielles pour empêcher les injections SQL. Ils vous permettent d'insérer dynamiquement des données dans des requêtes sans compromettre la sécurité.

Mise à jour d'un seul champ

Dans votre extrait de code, vous ne mettez à jour qu'un seul champ : le contenu. Ceci est acceptable car vous pouvez mettre à jour de manière sélective des colonnes individuelles dans une instruction UPDATE.

Liaison appropriée des paramètres

Pour lier correctement les paramètres dans une instruction préparée, il est essentiel de s'assurer que les types de données dans votre code correspondent aux types de données dans votre instruction MySQL. Dans votre cas, vous avez :

<code class="php">$stmt = $this->mysqli->prepare("UPDATE datadump SET content=? WHERE id=?");
$stmt->bind_param('is', $id, $content);</code>
Copier après la connexion

Le 'is' dans la méthode bind_param() spécifie que vous liez un entier (i) et une ou plusieurs chaînes. Cependant, vous utilisez en fait le code suivant pour définir la variable de contenu :

<code class="php">$content = isset($_POST['content']) ? $this->mysqli->real_escape_string($_POST['content']) : '';</code>
Copier après la connexion

Qui renvoie une chaîne. Cette incompatibilité peut entraîner des erreurs.

Corrections :

Pour corriger le problème, apportez les modifications suivantes :

<code class="php">if ($stmt === false) {
  trigger_error($this->mysqli->error, E_USER_ERROR);
  return;
}

$content = $_POST['content'] ?: '';
$stmt->bind_param('si', $content, $id);
````
**Additional Notes:**

* Always remember to check for statement preparation errors using `if ($stmt === false)`.
* Bind your parameters in the same order as they appear in your SQL statement.

**Troubleshooting:**

If you're still facing issues, ensure that:

* Your MySQL connection is established correctly.
* The table and column names in your statement are spelled correctly.</code>
Copier après la connexion

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
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!