IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problèmes d'apostrophes avec Insert


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut Problèmes d'apostrophes avec Insert
    Bonjour,
    Je cherche à insérer des données dans ma table 'films' qui provient d'une autre table 'films-present'. Mais dans des champs de ma table 'films-present', il se peut qu'il y ait des ' ' '(apostrophes), du coup ça stoppe l'insertion. Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    $sql = "SELECT * FROM `films-present`";
    			$requete = mysql_query($sql);
    			$nbResultats = mysql_num_rows($requete);//compte le nombre de ligne
    			while ($row = mysql_fetch_array($requete))
    			{
    				$id = $row['id-dvd']; echo "id-dvd : ".$row['id-dvd']."<br/>";
    				$image = $row['image']; echo "image : ".$row['image']."<br/>";
    				$date_sortie = $row['date_sortie']; echo "date_sortie : ".$row['date_sortie']."<br/>";
    				$resume = $row['resume']; echo "resume : ".$row['resume']."<br/>";
    				$titre = $row['titre']; echo "titre : ".$row['titre']."<br/>";
    				$realisateur = $row['realisateur']; echo "realisateur : ".$row['realisateur']."<br/>";
    				$acteur = $row['acteurs']; echo "acteur : ".$row['acteurs']."<br/>";
    				$genre = $row['genre']; echo "genre : ".$row['genre']."<br/>";
    				$video = $row['duree']; echo "duree : ".$row['duree']."<br/>";
    				$video = $row['critique']; echo "critique : ".$row['critique']."<br/>";
    				$video = $row['video']; echo "video : ".$row['video']."<br/>";
     
    				$sql2="INSERT INTO `films` (`id_films`, `titre`, `image`, `lettre`, `date_sortie_cinema`, `date_sortie_dvd`, `date_cinema`, `date_dvd`, `date_critique`, `date_jaquette`, `realisateur`, `acteur`, `genre`, `duree`, `resume`, `critique`, `video`, `titre_info`, `info`, `bonus_dvd`, `bonus_BD`, `jaquette`) VALUES ('', '$titre', '$image', '', '$date_sortie', '', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '$realisateur', '$acteur', '$genre', '$duree', '', '$critique', '$video', '', '', '', '', '')";
    				$requete2 = mysql_query($sql2) or die(mysql_error());
    			}
    Existe-t-il un moyen d'insérer ces champs qui contiennent des apostrophes ?

    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 089
    Points : 30 879
    Points
    30 879
    Par défaut
    Dans beaucoup de langages de programmation, l'insertion d'apostrophes dans une chaîne encadrée d'apostrophes s'effectue en doublant l'apostrophe en question.
    SQL ne déroge pas à cette règle.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut
    Mais je ne peux pas changer ma requête de façon à ce que je ne sois pas obligé de doubler l'apostrophe dans mon champ que je désire copier où il y a des apostrophes ?

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Citation Envoyé par blasil64 Voir le message
    Mais je ne peux pas changer ma requête de façon à ce que je ne sois pas obligé de doubler l'apostrophe dans mon champ que je désire copier où il y a des apostrophes ?
    Dans ta requête, tu doubles les apostrophes, mais dans la base, il n'y en aura qu'une.

  5. #5
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut
    Si je double les apostrophes comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql2="INSERT INTO `films` (`id_films`, `titre`, `image`, `lettre`, `date_sortie_cinema`, `date_sortie_dvd`, `date_cinema`, `date_dvd`, `date_critique`, `date_jaquette`, `realisateur`, `acteur`, `genre`, `duree`, `resume`, `critique`, `video`, `titre_info`, `info`, `bonus_dvd`, `bonus_BD`, `jaquette`) VALUES ('', ''$titre'', ''$image'', '', '$date_sortie', '', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', ''$realisateur'', ''$acteur'', ''$genre'', ''$duree'', ''$resume'', ''$critique'', '$video', '', '', '', '', '')";
    Cela m'indique une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de syntaxe près de '28 semaines...' à la ligne 1
    ce qui correspond au champ titre (donc le premier à avoir des doubles apostrophes).
    Merci pour votre aide !

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Avec MySQL il faut utiliser un antislash comme caractère d'échappement :
    http://dev.mysql.com/doc/refman/5.0/...ng-syntax.html

  7. #7
    Membre habitué Avatar de blasil64
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 324
    Points : 136
    Points
    136
    Par défaut
    C'est bon j'ai trouvé, j'ai utilisé preg_replace et preg_match pour chercher les apostrophes, que j'ai remplacé par '\\''. Voici le code pour comprendre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (preg_match("/".chr(39)."/", $resume)) $resume=preg_replace("/".chr(39)."/", "\\'", $resume);
    if (preg_match("/".chr(39)."/", $critique)) $critique=preg_replace("/".chr(39)."/", "\\'", $critique);
    if (preg_match("/".chr(39)."/", $titre)) $titre=preg_replace("/".chr(39)."/", "\\'", $titre);
    Du coup, mes champs ont des anti-slashs et je peux tout ajouter sans erreur.

    Merci beaucoup pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème fichier ressource avec insertion de son WAV
    Par Monromero1 dans le forum Langage
    Réponses: 5
    Dernier message: 30/11/2010, 15h42
  2. problème d'apostrophe dans insert!
    Par alicia26 dans le forum ASP.NET
    Réponses: 15
    Dernier message: 03/10/2008, 16h50
  3. [MySQL] Problème d'apostrophes dans insertion sql
    Par 12_darte_12 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 30/05/2006, 16h20
  4. Réponses: 17
    Dernier message: 03/05/2006, 14h01
  5. [MySQL] Problème d'apostrophe avec PHP
    Par gcooo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 28/04/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo