apostrophe dans insertion de champs texte

Petit nouveau ! | 8 Messages

06 juil. 2006, 09:48

bonjour voila je programme en php avec access derriere et j'ai un soucis sur mes champs texte à inserer en effet j'ai :

--> recuperation de mon champs
$nom_comp=$_POST['nom_com'];
ou la valeur de nom_com est utiliser l'outils le plus performant

--> puis ma requete d'insertion
$query_ajou="insert into competence values ($numero_comp,'".$nom_comp."');";

-->j'obtiens ce message d'erreur
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''utiliser l'outils le plus performant');'


l'erreur provient de l'apostrophe présent dans mon champs texte je devrais donc utiliser la fonction addslashes

$nom_comp=addslashes($_POST['nom_com']);
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression ''utiliser l\'outils le plus performant');'

j'ai toujours une erreur et la je bloque et je grrrrrrince des dents

Eléphant du PHP | 332 Messages

06 juil. 2006, 10:02

C'est toujours le souk avec ces apostrophes : on se demande pourquoi les concepteurs de SQL ont choisi l'apostrophe comme délimiteur de chaînes de caractères, c'était d'une stupidité sans nom : il y a tant de caractères qui ne servent à rien et qui auraient pu servir .... Mais bon, c'est fait, c'est fait.

Pour couronner le tout, les spécifs SQL ne précisent pas comment traiter une apostrophe dans une chaîne, donc chaque éditeur de base a fait comme il veut. Selon les bases SQL, on a les syntaxes suivantes :

Code : Tout sélectionner

INSERT INTO matable (monchamp) VALUES ('J\'aime l\'apostrophe') INSERT INTO matable (monchamp) VALUES ('J''aime l''apostrophe') INSERT INTO matable (monchamp) VALUES ('J~'aime l~'apostrophe')
De mémoire, ODBC utilise le doublement de l'apostrophe (deux fois l'apostrophe simple) et donc le addslashes ne sert à rien dans ce cas (fais toi ta fonction avec un simple str_replace)

Attention en plus : ça c'est la syntaxe SQL directe telle qu'elle est reçue par la base : donc si en plus tu dois inclure ta variable dans une chaîne PHP délimitée par des simples apostrophes, tu vas te retrouver avec des \'\' afin que la base recoive bien ''.

Petit nouveau ! | 8 Messages

06 juil. 2006, 10:07

en guettant sur certains site un me parle de directive PHP magic_quotes_sybase et magic_quotes_gpc ui doivent etre a on hors moi dans mon phpinfo elle sont a off comenty peut on les changer des fois que ca change quelque chose a mon probleme d'apostrophe

Eléphant du PHP | 332 Messages

06 juil. 2006, 11:54

comenty peut on les changer des fois que ca change quelque chose a mon probleme d'apostrophe
Dans le fichier php.ini, tu as ceci

Code : Tout sélectionner

; Magic quotes ; ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of \'). magic_quotes_sybase = Off
Ou sinon, tu fais un tour sur la doc de php
http://www.php.net/manual/fr/security.magicquotes.php

Invité
Invité n'ayant pas de compte PHPfrance

06 juil. 2006, 12:43

merci alors g enfin mis a on magic_quotes_sybase et magic_quotes_gpc l'enregistrment dans la base focntionne reste a savoir si je recupere correctement les bonne valeur

ps du coup g meme pas utiliser addslashes()