Caracteres " ' " en SQL + PHP
DAG
-
oscarapace Messages postés 58 Statut Membre -
oscarapace Messages postés 58 Statut Membre -
Bonjour,
J'ai un petit soucis. Je souhaite faire un INSERT dans une base MySQL en PHP.
Le problème est qu'il y a des caractères " ' " dans mes valeurs... Par exemple "L'HOMME'.
Donc forcément, j'ai des erreurs...
J'ai utilisé str_replace de la façon suivante :
Mais lorsque j'exécute ma requête, je retrouve dans ma base les "\". Ce qui est normal !
J'aimerais savoir s'il n'y aurait pas une façon de contourner cette erreur ?
Merci d'avance !
J'ai un petit soucis. Je souhaite faire un INSERT dans une base MySQL en PHP.
Le problème est qu'il y a des caractères " ' " dans mes valeurs... Par exemple "L'HOMME'.
Donc forcément, j'ai des erreurs...
J'ai utilisé str_replace de la façon suivante :
INSERT INTO maTable (Champs) VALUES '$data[NOM]=str_replace("'","\'",$data[NOM])';
Mais lorsque j'exécute ma requête, je retrouve dans ma base les "\". Ce qui est normal !
J'aimerais savoir s'il n'y aurait pas une façon de contourner cette erreur ?
Merci d'avance !
7 réponses
-
Bonjour,
en fait il faut que tu fasses une p'tite combine, qui va te rajouter/enlever des slashs devant tes caractères spéciaux.$champs = addslashes($champs); INSERT INTO maTable (Champs) VALUES ' " .champs. " '; Par la suite pour tes SELECT, tu feras: $champs = stripslashes($champs);
Voilà. -
Ok, merci pour la réponse.
J'essaierais ça demain car la je commence à en avoir marre ! Je rentre chez moi !! ;-)
Je te dirais si j'y arrive -
Juste avant de partir, j'avais vu une fonction <code mysql_real_escape_string</code>.
Ca pourrait marcher avec ça aussi non ? -
Non je ne penses pas ;) Ca sert à autre chose.
N'oublies pas de mettre "Résolu" si ça fonctionne.
Bonne fin de journée. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bon ça fonctionne, merci beaucoup.
C'est un peu contraignant je trouve, car il faut l'utiliser pour toutes les requetes SQL (et j'en est beaucoup : une centaine entre les INSERT, UPDATE et les SELECT), mais ça marche !
Merci encore et A+ -
Bah tu les mets juste pour les champs textes, et pas les autres. Après si tu as énormement de champs, c'est sur c'est contraignant.
-
sinon si tu utilise la librairie adodb pour connecter php à ta base de données, elle dispose d'une fonction (qstr) qui permet de gérer automatiquement les caractères à mettre entre guillemets ou pas. tu passes tout par cette fonction et comme ça tu es sur de ne jamais avoir de soucis