Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 11h51   #1
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Par défaut Echappement de "--"

Bonjour,

en php,je souhaite faire :

Code :
SELECT * FROM article WHERE code ='aa--25'
mais je me fais jeter avec le message suivant :

Citation:
error code -104 : unexpected end of commande
En effet, "--" est la fin de commande par défaut.
Comment puis-je échapper les 2 tirets ?

D'avance, merci pour vos suggestions.
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 12h29   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Dans PHP -- est interprété comme fin de commande SQL ??

C'est donc un probleme php et non firebird, peut etre si vous postiez ou cherchiez dans le forum PHP vous trouverez plus facilement.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 18h43   #3
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : juillet 2005
Messages : 768
Points : 492
Points : 492
Bonsoir,

non, c'est bien firebird qui renvoie le message : http://img4.imageshack.us/img4/5030/err1z.png
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 08h48   #4
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 624
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 624
Points : 4 529
Points : 4 529
Voila un exemple ou l'utilisation de paramètres est plus que recommandée .

n'étant pas un pro de PHP je ne fournirai pas de solution . il semblerai que l'interpreteur du SQL php prend les '--' pour le début de commentaire
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h24   #5
Inscrit
 
Inscription : mai 2004
Messages : 759
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 759
Points : 288
Points : 288
Citation:
Envoyé par Barbibulle Voir le message
Dans PHP -- est interprété comme fin de commande SQL ??

C'est donc un probleme php et non firebird, peut etre si vous postiez ou cherchiez dans le forum PHP vous trouverez plus facilement.
je viens juste de tester et c'est Confirmé ! cherche du coté de PHP ou autre.
devalender est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 11h52   #6
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
'--' correspond bien à un début de commentaire ligne (tout ce qui se trouve après est de type commentaire.)

Cependant essayez votre requête dans ISQL (livré avec firebird) ou IBEXPERT et vous verrez qu'elle fonctionne bien.

Donc votre soucis vient du fait que les -- sont probablement interprétés comme début de commentaire ligne malgré le fait qu'ils soient à l'intérieur d'une chaine.

Je pencherais donc pour un soucis non pas firebird peut être pas PHP non plus mais plus votre parseur SQL. Quel drivers utilisez vous pour attaquer firebird ?

Comme le suggère SergioMaster, essayer de voir si vous avez la possibilité d'utiliser des paramètres dans vos requêtes. (Ce qui vous évitera bien des soucis liés aux formats (ici une chaine de caractère qui est interprétée au lieu de passée en paramètre, et plus tard vous allez revenir à cause des dates )

En gros le principe c'est que votre requete serait

Code :
SELECT arkcodart, .... FROM article WHERE arkcodart=:NUMART
et il suffit de renseigner la valeur du paramètre NUMART avant d’exécuter la requête.
Dans l'idée :
Code :
1
2
3
MaRequete.SQL ='Select arkcodart from article where arkcodart=:NUMART'
MaRequete.param['NUMART'] = 'truc--machin'
MaRequete.exec
Donc a mon avis postez dans le forum PHP, car c'est le genre de chose générique quelque soit le SGBD.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/12/2011, 12h47   #7
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 753
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 49
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 753
Points : 6 769
Points : 6 769
Salut

On pourrait tricher en utilisant like et en précisant un caractère d'échappement.

Code :
1
2
SELECT * FROM ARTICLE
WHERE CODE LIKE 'aa-$-25' ESCAPE '$'
Mais bon, cela reste de la bidouille. Une requête paramétrée reste à privilégier.

@+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/12/2011, 15h39   #8
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Si tu veux "tricher" il y a plus simple :

Code :
SELECT * FROM article WHERE code ='aa-' || '-25'
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/12/2011, 16h14   #9
Modérateur
 
Avatar de Cl@udius
 
Homme Claude Renouleaud
Développeur informatique
Inscription : février 2006
Messages : 4 753
Détails du profil
Informations personnelles :
Nom : Homme Claude Renouleaud
Âge : 49
Localisation : France, Hautes Pyrénées (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2006
Messages : 4 753
Points : 6 769
Points : 6 769
mouarf, bien vu
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira.
Cl@udius est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h30.


 
 
 
 
Partenaires

Hébergement Web