Maison > base de données > tutoriel mysql > le corps du texte

Comment surmonter les erreurs de syntaxe MySQL causées par les apostrophes dans les données insérées ?

Patricia Arquette
Libérer: 2024-10-24 02:47:29
original
920 Les gens l'ont consulté

How to Overcome MySQL Syntax Errors Caused by Apostrophes in Inserted Data?

Erreur de syntaxe MySQL lors de l'insertion de données avec des apostrophes

Lorsque vous essayez d'insérer des données dans une base de données MySQL à l'aide d'une requête INSERT, vous pouvez rencontrer un erreur si les données contiennent des apostrophes (guillemets simples). Cette erreur se manifeste généralement par un problème de syntaxe lié aux données citées.

Message d'erreur :

You have an error in your SQL syntax; check the manual that
 corresponds to your MySQL server version for the right syntax to use
 near 's','Corn Flakes 170g','$ 15.90','$ 15.90','$ 14.10','--')' at
 line 1MySQL Update Error:
Copier après la connexion

Explication :

Dans MySQL, les apostrophes sont utilisées comme délimiteurs pour les valeurs de chaîne. Lorsqu'une apostrophe apparaît dans une chaîne, elle doit être échappée à l'aide d'une barre oblique inverse () pour la différencier du délimiteur. Cela garantit que l'analyseur MySQL comprend que l'apostrophe fait partie de la chaîne et non du délimiteur.

Solution :

Pour résoudre ce problème, échappez à toutes les apostrophes dans le les données que vous essayez d'insérer en ajoutant une barre oblique inverse avant chaque apostrophe. Par exemple, au lieu d'insérer la chaîne « Kellogg's », vous insérez « Kellogg's ». En échappant à l'apostrophe, vous demandez à MySQL de la traiter comme faisant partie de la valeur de la chaîne, et non comme le délimiteur.

Solution supplémentaire (en utilisant mysql_real_escape_string) :

Si vous Si vous utilisez PHP pour vous connecter à MySQL, vous pouvez utiliser la fonction mysql_real_escape_string() pour échapper automatiquement tous les caractères spéciaux, y compris les apostrophes, dans vos données avant de les insérer dans la base de données. Cette fonction garantit que vos données sont correctement formatées pour l'insertion et empêche les attaques par injection SQL. Voici un exemple de fonction utilisant mysql_real_escape_string() :

<code class="php">function insert($database, $table, $data_array) { 
    // ... (Rest of the code omitted for brevity)

    // Escape apostrophes in data values
    foreach ($data_array as $key => $value) { 
        $tmp_dat[] = "'".mysql_real_escape_string($value)."'";
    } 

    // ... (Rest of the code omitted for brevity)
}</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!