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

PHP & Base de données Discussion :

Insertion avec le caratère apostrophe [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier Avatar de King_T
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 157
    Points : 121
    Points
    121
    Par défaut Insertion avec le caratère apostrophe
    salut,
    lors de l'insertion dans la base de données il y a une erreur a cause du caratere apostrophe.
    voici le code php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo $query="INSERT INTO `ouvrage` (`CODE_THEM`, `CODE_AUT`, `CODE_TYPE`, `TITRE`, `MAISON_EDITION`, `DATE_APPARTION`, `NBRE_COPIEDISPO`, `NBRE_COPIETOTAL`, `URL_IMG`) 
    		VALUES ($p_theme, $bd_code_o,$p_type,'$p_titre', '$p_maison', '$p_date', $p_nbrcop, $p_nbrcop, '$fichier')";
    mysql_query($query, $db);
    après l'execution j'ai ce resultat :
    INSERT INTO `ouvrage` (`CODE_THEM`, `CODE_AUT`, `CODE_TYPE`, `TITRE`, `MAISON_EDITION`, `DATE_APPARTION`, `NBRE_COPIEDISPO`, `NBRE_COPIETOTAL`, `URL_IMG`) VALUES (100, 10,100, 'l'avare', 'france livre', '2000-02-05', 12, 12, 'image/default.png')

    Comment faire pour éviter ce probleme??
    Merci pour votre aide
    Dreaming in Digital, Living in Realtime, Thinking in Binary, Talking in IP .... Welcome to our World !!!!

  2. #2
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut utilise addslashes()
    1. Pour que la requête s'exécute plus rapidement, il faut concaténer les variable et non les intégrer dans la châine.

    2. Utilise la fonction addslashes() pour tes variables qui pourraient contenir un apostrophe

    3. N'utilise pas d'apostrophe pour le nom de ta table, cela génère justement une erreur d'apostrophe (du moins en ce qui me concerne (avec mysql) ).

    Résultat d'une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "INSERT INTO ouvrage VALUES ('". $var1 ."', '". $etc ."'";
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  3. #3
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    1. Pour que la requête s'exécute plus rapidement, il faut concaténer les variable et non les intégrer dans la chaine.
    Je suis réellement curieux de savoir pourquoi la requête s'exécute plus vite en concaténant les variables?
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  4. #4
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut pas besoin de savoir pourquoi
    Je ne me pose pas la question de savoir pourquoi.
    Je me pose uniquement les question de savoir comment.

    Cela a été démontré dans un tutoriel sur ce même site mais je ne le retrouve pas. La différence était assez importante
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  5. #5
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    ok Merci je vais chercher de mon coté
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  6. #6
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Citation Envoyé par SphynXz Voir le message
    Je suis réellement curieux de savoir pourquoi la requête s'exécute plus vite en concaténant les variables?
    Si tu jette un coup d'oeil dans le Magazine Developpez.com de Decembre 2007 ici, tu vas peut être y trouver un embryon de réponse
    Pour moi en tout cas, cela m'a appris pas mal de chose sur les perfs de PHP.
    A+
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  7. #7
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    merci

    ce qui m'étonnais c'est que justement, les performances sont amoindris lorsqu'on concatène par exemple de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Mr '.$prenom.' '.$nom;
    et qu'on m'a toujours dit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Mr {$prenom} {$nom}";
    pour des gains de performances
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

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

Discussions similaires

  1. Requéte Insert avec apostrophe
    Par Pascal Lob dans le forum Access
    Réponses: 1
    Dernier message: 03/04/2013, 23h35
  2. [MySQL] Problème d'insertion avec apostrophe
    Par cari dans le forum PHP & Base de données
    Réponses: 86
    Dernier message: 11/07/2006, 12h21
  3. Insertion avec une apostrophe
    Par oursquetaire dans le forum Oracle
    Réponses: 2
    Dernier message: 02/01/2006, 11h35
  4. insertion d'une clé primaire avec un "d" apostroph
    Par imer5 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 18/05/2005, 14h51
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

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