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

Requêtes MySQL Discussion :

quote dans des valeurs d'une colonne SET


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut quote dans des valeurs d'une colonne SET
    Bonjour,

    J'ai un souci avec des valeurs d'un SET comportants des apostrophes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set('hotel', 'gite', 'chambres d\'hotes', 'location meublée', 'gite d\'étape')
    rentré tel quel (phpmyadmin 2.6.1 mysql 4.1.9), devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SHOW COLUMNS FROM tbl_hebergement LIKE "type" =>
    set('hotel','gite','chambres d''hotes','location meublée','gite d''étape')
    l'apostrophe est doublée (?) et en consequence quand je veux fixer les valeurs de ce champ pour la ligne correspondante, MySql me rejette les valeurs "chambres d''hotes" ou "gite d''etape, puisqu'elle ne correspondent pas aux valeurs fixées pour la colonne.
    un traitement via php n'arrange pas les choses :
    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
    // connection à la DB
    $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
    mysql_select_db($db) or die ('Erreur :'.mysql_error());
    //modification des valeurs de la colonne SET   
    $alter = "ALTER TABLE tbl_hebergement CHANGE type type SET(\"hotel\",\"gite\",\"chambres d'hotes\",\"location meublée\",\"gite d'étape\") NOT NULL";
    mysql_query($alter,$link) or die ('Erreur : '.mysql_error() );
    // je recupere les valeurs du SET
       $select = 'SHOW COLUMNS FROM tbl_hebergement LIKE "type"';
       $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    if($total)   {
    $row = mysql_fetch_array($result);
    //affichage
    print_r($row);
    }
    renvoi les 2 apostrophes sur les valeurs , et les double quotes deviennent des apostrophes ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [0] => type [Field] => type [1] => set('hotel','gite','chambres d''hotes','location meublée','gite d''étape') [Type] => set('hotel','gite','chambres d''hotes','location meublée','gite d''étape') [2] => [Null] => [3] => [Key] => [4] => [Default] => [5] => [Extra] => )
    ou est le truc SVP ? comment empecher l'apparition de la quote superflue ?
    j'ai posté dans le forum php hier mais je pense que ca concerne plutot mySql
    merci d'avance

  2. #2
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    pourquoi ne pas utiliser " au lieu de ' ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par afrikha
    pourquoi ne pas utiliser " au lieu de ' ?
    c'est ce que je fais avec le script php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $alter = "ALTER TABLE tbl_hebergement CHANGE type type SET(\"hotel\",\"gite\",\"chambres d'hotes\",\"location meublée\",\"gite d'étape\") NOT NULL";
    j'ai testé les 2 possibilités ('valeur' & "valeur") , sous phpmyadmin, directement via php ou dans une console sql et le resultat est identique ,apres la requete sous phpmyadmin les doubles quotes sont redevenus simples, le simple est protégé par un antislashe, et en output l'antislashe devient quote : : :
    c'est pas un probleme de config? y'a pas des mysql_magic_quotes
    ?

  4. #4
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    C'est un peu obscur comme problème. Tu as accès à la base à travers autre chose que PHPMyAdmin ?

    Tu as essayé d'échapper les apostrophes avec des \ lors de l'insertion ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Maximilian
    C'est un peu obscur comme problème. Tu as accès à la base à travers autre chose que PHPMyAdmin ?

    Tu as essayé d'échapper les apostrophes avec des \ lors de l'insertion ?
    Bonjour,

    c'est plus qu'obscur pour moi , et mes explications ne semblent pas tres claires non plus
    donc j'ai fait des tests en local , en essayant de rentrer les valeurs du SET de plusieurs facons : soit SET("gite d'etape", "chambres d'hotes",etc) soit SET('gite d\'etape','chambres d\'hotes', etc), et meme SET("gite d\'etape",etc);
    les tests ont tous été effectués 1) via l'interface graphique de phpmyadmin, et 2)depuis la console sql de phpmyadmin, et 3) directement en php;
    j'obtiens systematiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SHOW COLUMNS FROM tbl_hebergement LIKE "type" =>SET('gite d''etape','chambres d''hotes', etc)
    l'antislashe devient quote, et dans les tests rentrés avec des doubles quotes , ces dernieres se sont transformées en simple quote...
    Au secooooooooooooouuuuuuuuuuurs !!!

  6. #6
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Mais ça c'est parfaitement normal.

    - Le quote est traditionnellement le caractère délimiteur de chaine dans le langage SQL
    - Donc dans une chaîne un quote (apostrophe) doit être précédé d'un caractère d'échappement, c'est à dire soit \' soit '' (ce n'est pas un double quote mais deux quotes consécutifs).

    Un conseil : utilise des quotes pour délimiter tes chaines de caractères, c'est peut-être les guillemets qui font tout foirer...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 36
    Points
    36
    Par défaut
    Merci je commence un peu à cerner le probleme et je commets une erreur en m'obstinant à vouloir obtenir de SHOW COLUMN FROM tbl_... soit 1 quote échapée = > set('hotel','gite','chambres d\'hotes','location meublée','gite d\'étape'),
    soit 1 quote à l'interieur de double quote => set("hotel","gite","chambres d'hotes"',"location meublée","gite d'étape")
    Echapper une quote avec un antislash ou une quote , ca je comprends, ce que je comprends moins c'est que je ne puisse pas choisir mon caractere d'echappement (l'antislash devient quote), c'est un comportement normal de Mysql ? je ne peux pas obtenir autre chose de show colum que set('hotel','gite','chambres d''hotes','location meublée','gite d''étape') ? (c'est la plus mauvaise option pour moi pour le traitement en php vu que je suis archi nul en expression reguliere )

    pour info en ce qui concerne l'utilisation de phpmyadmin en mode graphique , ca genere une erreur d'insertion de données : le caractere d'echappement choisi par ? (mysql ?) est interpreté non plus comme un caratere d'echappement , mais comme un caractere faisant parti de la chaine !!!! ex :

    Structure (valeurs echappées avec un antislash):


    insertion : (valeurs mysterieusement "echappées" avec une quote...)


    requete envoyée (les 2 quotes sont chacunes échappées avec une quote)


    resultat : l'insertion de la valeur de la colonne SET dans la ligne echoue !!!



    merci @+

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

Discussions similaires

  1. [XL-2010] Copie des valeurs d'une colonne dans un autre fichier sous condition
    Par Fred_rt dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/03/2015, 11h50
  2. Réponses: 7
    Dernier message: 14/02/2011, 00h53
  3. Réponses: 9
    Dernier message: 10/10/2008, 16h39
  4. Maximum des valeurs d'une colonne
    Par cjacquel dans le forum Access
    Réponses: 1
    Dernier message: 19/01/2007, 17h25
  5. Réponses: 2
    Dernier message: 11/07/2006, 12h02

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