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 :

PHP MYSQL et apostrophe [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut PHP MYSQL et apostrophe
    Bonjour à tous,

    je suis confronté au problème suivant:

    je développe sous easyphp 5.3.1.0 une appli web avec une BDD Mysql et là je travaille sur une procédure de migration entre deux bases.
    j'ai une table T1 qui contient un champ qui s'appelle champ1 et de type varchar

    Ce champ champ1 me sert de clé unique pour identifier un élément.
    Donc lors de l'export d'un élément j'aimerai tester avant si la valeur $nomValeur que je veux exporter n'existe pas déja pour cette colonne.

    je fais la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from T1 where champ1 = '$nomValeur'
    ;

    Or la donnée $nomValeur peut contenir une ou plusieurs apostrophe et typiquement pour mon test j'ai crée dans la base qui va recevoir la donnée une ligne de valeur champ1 = TEST A'postr'op'he. la valeur contenue dans le champ champ1 est bien egale à TEST A'postr'op'he

    j'ai bien verifié que ma donnée $nomValeur = "TEST A'postr'op'he" et quand je fais ma requête je n'ai pas de resultat qui me dit que la donnée existe deja alors que quand c'est une chaine sans apostrophe, tout se passe bien ma fonction me renvoit que la donnée existe deja.

    Des idéees?merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu t'embêtes à priori pour rien.

    Si tu veux envoyer les lignes de T1 qui n'existent pas dans ta T2 avec champ1 déclaré comme clef unique dans les deux tables :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT IGNORE INTO T2 (SELECT (teschamps) FROM T1)

    Sinon pour comprendre ton problème quand même : est-ce que tes chaines ne seraient pas convertis en entités HTML lors de l'insertion ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse.

    je vais peut être mieu exposé mon problème.

    la table de départ T1 est déclaré de la façon suivante : (champ1T1, champ2T1) avec champ1T1 comme clé primaire.

    La table T2 est déclarée de la façon suivante (champ1T2, champ2T2, champ3T2, etc etc...) avec champ1T2 comme clé primaire autoincrement et dans cette table pour la migration champ2T2 doit être égal a champ1T1 et champ3T2 doit être égal a champ2T1. En gros (champ2T2, champ3T2) doit être un couple unique dans la table T2.

    je précise quand même que les 2 tables ne sont pas sur la même base de données mais ça ne me pose aucun problème ça.

    je fais donc ma migration la 1ere fois et tout se passe bien. je veux donc relancer ma migration avec la table T2 déjà à jour avec les données de T1 , et vérifier donc que cette fois ci aucune donnée de T1 soit insérée dans T2. je vérifie donc que le couple (champ1T1, champ2T1) n'est pas déjà pressent dans la table T2 d’où pour chaque ligne de T1 je fais
    $query = "SELECT * FROM T2 WHERE champ2T2 = '$champ1T1' AND champ3T2 = '$champ2T1'" puis mysqlQuery($query, $connexion) dans une fonction qui me retourne vrai ou faux.

    la vérification se passe bien pour les champs $champ2T1 qui ont une valeur ne contenant pas d'apostrophes et ils ne sont pas insérés a nouveau dans T2. Cependant pour les champs $champ2T1 qui contiennent des apostrophes ils st a nouveaux insérés. je pense que j'ai un problème de syntaxe au niveau de la comparaison de chaine de caractères pour ce champ. le contenu de ma valeur $champ2T1 est ok je l'ai vérifié par un affichage mais peut être que le fait de la mettre entre ' ' serait la source du problème et que pour la comparaison il ne prenne que la partie de la chaine qui se trouve avant l'apostrophe..

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Ah ou aussi, si je préfère passer par la fonction de test, c'est que grâce a son résultat je vais faire ensuite ou non de nouvelles insertions dans d'autres tables de ma base B2

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2013
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    C'est bon j'ai trouvé, j'ai écrit ma requete de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "SELECT * FROM T2 WHERE champ2T2 = '$champ1T1' AND champ3T2 =".'"'.$champ2T1.'"';
    c’était bien un pb de guillemet autour de $champ2T1

    Merci de l'aide

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

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [MySQL] problème avec les apostrophes PHP Mysql
    Par TEXMAN1 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/09/2010, 21h28
  3. Apostrophes sous php/mysql
    Par enzostar dans le forum Langage
    Réponses: 7
    Dernier message: 21/08/2009, 15h18
  4. traitement des apostrophes php-mysql-flash
    Par pingoo67 dans le forum Dynamique
    Réponses: 2
    Dernier message: 19/06/2007, 20h17
  5. [MySQL] Probléme de apostrophe a mettre en formulaire php/mysql
    Par mecmec dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/06/2007, 20h42

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