Page 1 sur 2
caractères spéciaux dans une entete de champ de table
Posté : 09 oct. 2008, 09:49
par fred9999
bonjour à tous
voila j'ai un soucis au niveau de l'interrogation d'un table
l'entete de mon champ est N°CLient et forcément lorsque j'essaye de le traiter
par sql il ne le prend pas
il y a t'il une astuce pour ça?
$query="SELECT * FROM BETTY.FACRECTEST WHERE N°Client='".$_POST['cli']."'";
juste pour info voici l'erreur :
Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0104 - Elément syntaxique ° n'est pas correct. Eléments possibles : < > = <> <= !< !> != >= ¬< ¬> ¬= IN NOT., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86
Posté : 09 oct. 2008, 10:15
par Berzemus
C'est courageux que de vouloir utiliser des caractères "exotique" dans le nom d'une colonne.. essaye en mettant des accents (! pas des apostrophes):
Code : Tout sélectionner
SELECT * FROM BETTY.FACRECTEST WHERE `N°Client`='".$_POST['cli']."'
J'ai eu le même souci avec une feuille excel, impossible de faire comprendre que des accents ou tout caractère qui n'était pas a-zA-Z était à proscrire..
Posté : 09 oct. 2008, 10:22
par fred9999
courageux ... non ... je suis obligé de faire avec
les accents ... négatifs capitaine ... ça passe pas et on a perdu le sergent ryan
erreur similaire : Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0104 - Elément syntaxique ` n'est pas correct. Eléments possibles : ( + - ? : DAY NOT RRN CASE CAST CHAR DATE DAYS HASH HOUR LEFT., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86
Posté : 09 oct. 2008, 10:34
par mere-teresa
J'ai cherché sur
(mots clefs sql db2 quote)
http://bytes.com/forum/thread624644.html
Posté : 09 oct. 2008, 11:24
par fred9999
alors si je comprend bien :
le ' permettrai de rendre lisible le ° pour l'exécution de ma requete.
or j'ai un message d'erreur me disant qu'il n'accepte pas les caractères UTF8.
message d'erreur :
Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0105 - Constante de chaîne de type UTF8, graphique ou mixte non admise., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86.
ou alors je suis complétement à la masse
ça peut pas venir de mon lien odbc par hasard?
Posté : 09 oct. 2008, 11:28
par Berzemus
peut-être un souci d'encodage du nom de la table..
Si ton fichier php est en utf8, essaye ceci:
utf8_decode(N°Client)
pour le faire passer en iso.
Posté : 09 oct. 2008, 11:32
par fred9999
non il me met toujours le meme message.
$query="SELECT * FROM BETTY.FACRECTEST WHERE ".utf8_decode("N'°'Client")."='".$_POST['cli']."'";
c'est bien comme ça pour l'utiliser ?
Posté : 09 oct. 2008, 11:51
par Berzemus
Plutôt comme ceci:
$query="SELECT * FROM BETTY.FACRECTEST WHERE ".utf8_decode("N°Client")."='".$_POST['cli']."'";
mais si on à enlevé le UTF8, reste encore l'élément graphique ou mixte..
Ceci dit, l'apostrophe délimite un chaine textuelle, pas le nom d'une table.
Il doit y avoir moyen de délimiter le nom de la table, mais si ce ne sont pas les accents, je ne vois pas ce que ça pourrait être..
Posté : 09 oct. 2008, 11:54
par fred9999
en fait si je met pas les ' ça me marque exactment le meme message d'erreur que mon premier message.
j'ai trouver ça sur du vb mais ça fonctine pas non plus :
http://www.vbfrance.com/forum/sujet-REQ ... 72632.aspx
Posté : 09 oct. 2008, 15:15
par Maitrepylos
Tu es sur que cela ne fonctionne pas ?
$query="SELECT * FROM BETTY.FACRECTEST WHERE [`N°Client`]=".$_POST['cli'].";
Posté : 09 oct. 2008, 15:40
par fred9999
ouais mais il me dis qu'il comprend pas les [.
message : Warning: odbc_exec(): SQL error: [IBM][Pilote ODBC iSeries Access][DB2 UDB]SQL0104 - Elément syntaxique [ n'est pas correct. Eléments possibles : ( + - ? : DAY NOT RRN CASE CAST CHAR DATE DAYS HASH HOUR LEFT., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-8\www\stat\mtcli.php on line 86
j'ai l'impression que c'est le lien odbc vers mon AS400 qui bugge mais après comment faire ?
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]
Posté : 09 oct. 2008, 15:50
par Maitrepylos
Je viens de créer un table N°Client
et dans mon Editeur Sql ceci passe sans problème
Posté : 09 oct. 2008, 16:11
par fred9999
non mais en fait laissez tomber j'ai eut un eclair d'un coup :
si dans l'editeur as400 je ne voyai pas les étiquettes de colonnes qui remplace les denominations
de champ.
ET PAFFF
en plein dedans donc c normal qu'il ne me les trouvait pas

Posté : 09 oct. 2008, 16:35
par furiouslol
Euh j'veux pas dire de bétise mais pour gérer les caracteres spéciaux c'est l'accent inversé qu'il faut utiliser, et non pas l'apostrophe ou le guillemet
Posté : 09 oct. 2008, 19:15
par Berzemus
non mais en fait laissez tomber j'ai eut un eclair d'un coup :
si dans l'editeur as400 je ne voyai pas les étiquettes de colonnes qui remplace les denominations
de champ.
ET PAFFF
en plein dedans donc c normal qu'il ne me les trouvait pas

