Maison >base de données >tutoriel mysql >Comment surmonter les erreurs de syntaxe MySQL causées par les apostrophes dans les données insérées ?
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:
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>
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!