Comment insérer une chaîne de caractères qui contient des virgules via une requête mysql?

J'ai un tableau avec 3 colonnes : id, food_name, et category.
Par exemple, j'ai $food_name = "Amaranth grain, cooked" (il y a une virgule), et category = "Cereals".

Je ne peux pas insérer les valeurs et le message d'erreur suivant:

Could not connect: 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 ')
      VALUES ('Amaranth grain, cooked', )' at line 1

Ma requête SQL est :

$results1 = mysql_query("
  INSERT INTO " . $table . " (food_en, category)
  VALUES ('" . $food_name . "', '" . $category . "')"
)or die(mysql_error());

Ma conjecture est que la virgule dans "l'Amarante-grain, cuits" pose un problème, mais je ne peux pas le résoudre. J'ai essayé str_replace(',', '\,', $food_name) et mysql_real_escape_string() sans succès. J'ai probablement ne pas utiliser leur droit.

Merci d'avance.

EDIT: j'ai fait echo $catégorie, et il n'est pas null ni vide (la valeur est "Céréales").

Lorsque j'imprime au lieu d'utiliser mysql_query, j'obtiens:

INSERT INTO calories (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO carbohydrates (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO fats_and_fatty_acids (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO protein_and_amino_acids (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO vitamins (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO minerals (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO sterols (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')
      INSERT INTO other (food_en, category)
      VALUES ('Amaranth grain, cooked', 'Cereal Grains and Pasta')Could not connect: 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 ')
      VALUES ('Amaranth grain, cooked', )' at line 1

(les différents tableaux sont simplement différentes tables de je veux de la ligne à insérer dans)

  • Vous ne devriez pas utiliser mysql_ fonctions à tous, mais, plutôt, PDO ou mysqli avec des requêtes paramétrées.
  • Je ne pense pas que votre code puisse être possible de générer une requête qui doit produire le message d'erreur que vous avez posté. Il n'y a pas ', ' dans le message d'erreur. L'ensemble de la deuxième champ est complètement absent. Êtes-vous sûr que vous avez publié sur le code vous sont effectivement en cours d'exécution?
  • remplacer mysql_query avec print et après ce qu'il crache.
  • Votre erreur ne correspond pas à votre code. Il devrait y avoir 2 ' dans votre message d'erreur en fonction de votre code: VALUES ('Amaranth grain, cooked', )' devrait être VALUES ('Amaranth grain, cooked', '')'
  • Où est le "impossible de se connecter" en venir? Êtes-vous sûr que vous êtes en train de regarder le bon endroit pour la cause de l'erreur? Est-il possible que le INSERT INTO other requête pourrait avoir exécuté correctement et que l'erreur a été causée par un autre requête dans une autre partie de votre code?
InformationsquelleAutor user1011444 | 2012-05-18