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 :

pb de apostrophes et/ou guillmets dans une requete [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 6
    Par défaut pb de apostrophes et/ou guillmets dans une requete
    Bonjour,
    Je dois créer un fichier xml à partir d'une base de données Mysql. J'ai un pb sur une requête sql qui est lié à PHP, je pense.
    Lorsque j'affiche ma requête et que je la lance directement dans Mysql, elle fonctionne bien. En revanche, dans mon fichier php, elle ne fonctionne pas. Elle m'indique une erreur 1064. J'ai retourné le pb dans tous les sens et impossible de trouver. Cela vient des "" '' autour du like mais je ne vois pas.

    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
    $query ="SELECT n.nid AS id, n.title AS name, c.field_prsentation_value AS description, FROM_UNIXTIME(c.field_dates_de_lvnement_value)AS dated, FROM_UNIXTIME(c.field_date_de_fin_value) AS datef, c.field_lieu_latitude AS lat, c.field_lieu_longitude AS lng, c.field_lieu_address AS address, ( 3959 * acos( cos( radians( '%s' ) ) * cos( radians( c.field_lieu_latitude ) ) * cos( radians( c.field_lieu_longitude ) - radians( '%s' ) ) + sin( radians( '%s' ) ) * sin( radians( c.field_lieu_latitude ) ) ) ) AS distance
    FROM content_type_evenements c, node n"; 
     
    // avec date > ne fonctionne pas
    if($dates!=none) {
    	$query .=" WHERE n.nid = c.nid 
      AND (('FROM_UNIXTIME(c.field_dates_de_lvnement_value)' LIKE '$dates%') 
      OR (".$datesu." BETWEEN c.field_dates_de_lvnement_value 
           AND c.field_date_de_fin_value ) ) 
           ORDER BY distance";
    }
     
    // sans date > fonctionne
    if($dates==none) {
    	$query .=" WHERE n.nid=c.nid HAVING distance < '%s' ORDER BY distance";
      //$query .=" WHERE n.nid=c.nid  distance < ORDER BY distance";
    }
    et en claire, la requete qui fonctionne sous mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT n.nid AS id, 
               n.title AS name, 
               c.field_prsentation_value AS description,
               FROM_UNIXTIME(c.field_dates_de_lvnement_value)AS dated,    
               FROM_UNIXTIME(c.field_date_de_fin_value) AS datef,
               c.field_lieu_latitude AS lat, c.field_lieu_longitude AS lng, 
              c.field_lieu_address AS address, ( 3959 * acos( cos( radians( '%s' ) ) * cos( radians( c.field_lieu_latitude ) ) * cos( radians( c.field_lieu_longitude ) - radians( '%s' ) ) + sin( radians( '%s' ) ) * sin( radians( c.field_lieu_latitude ) ) ) ) AS distance 
     
    FROM content_type_evenements c, node n 
    WHERE n.nid = c.nid AND (('FROM_UNIXTIME(c.field_dates_de_lvnement_value)' LIKE '2009-02-12%') OR (1234393200 BETWEEN c.field_dates_de_lvnement_value AND c.field_date_de_fin_value ) ) 
     
    ORDER BY distance

    Je suis à court d'idée.
    Merci d'avance pour être aide.

    Elise

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    même en clair ça ne doit pas marcher (ou pour de mauvaises raisons). Il ne faut pas d'apostrophes autour de FROM_UNIXTIME :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'FROM_UNIXTIME(c.field_dates_de_lvnement_value)'

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 6
    Par défaut
    Bonjour,

    Il y a toujours une erreur autour du LIKE. Voilà tous les essais que j'ai fait et je ne comprends toujours pas :

    sans parenthèse autour du LIKE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((FROM_UNIXTIME(c.field_dates_de_lvnement_value) LIKE '$dates%' )
    sans parenthèse autour du FROM_UNIX..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (FROM_UNIXTIME(c.field_dates_de_lvnement_value LIKE '$dates%' )
    avec apostrophes autour du FROM_UNIX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ('FROM_UNIXTIME(c.field_dates_de_lvnement_value)' LIKE '$dates%' )
    avec guillements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (FROM_UNIXTIME(c.field_dates_de_lvnement_value LIKE '".$dates%."' )
    dans chaque cas, il m'indique l'erreur 1064 près du LIKE.

    J'ai aussi vérifié qu'il est possible d'utiliser du LIKE sur des int. C'est le cas.
    Et puis la requête fonctionne dans mysql. Je ne vois pas d'où ça peut venir...

    Est-ce qu'il a des précautions à prendre lorsque le serveur est en UNIX ?

    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    Quel est le message associé à l'erreur 1064 ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 6
    Par défaut
    Le message d'erreur exacte est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invalid query: 1064: 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 ''2009-02-12 OR (1234393200 BETWEEN c.field_dates_de_lvnement_value AN' at line 3
    Il me semble que c'est le code d'erreur relatif au double cote et simple cote...

  6. #6
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut juste un truc,
    peux-tu remplacer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (FROM_UNIXTIME(c.field_dates_de_lvnement_value LIKE '".$dates%."' )
    par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (FROM_UNIXTIME(c.field_dates_de_lvnement_value LIKE '".$dates."%' )
    sinon, fait un echo de ta requete et tu le poste.

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

Discussions similaires

  1. [AC-2007] problème d'apostrophe dans une requete
    Par miamou dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/12/2009, 15h35
  2. Apostrophe dans une requete sql
    Par taroudant dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/01/2008, 21h02
  3. translate dans une requete pour une apostrophe
    Par wincroc dans le forum WinDev
    Réponses: 4
    Dernier message: 10/12/2007, 12h35
  4. [SQL] Apostrophe dans une requete SQL
    Par jdiamsss dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 29/10/2006, 21h30
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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