É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>
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>
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>
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!