Caracteres " ' " en SQL + PHP

Fermé
DAG - 5 août 2008 à 18:21
oscarapace Messages postés 56 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 19 juin 2009 - 6 août 2008 à 15:43
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 :
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 !
A voir également:

7 réponses

CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
5 août 2008 à 18:46
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à.
0
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
0
Juste avant de partir, j'avais vu une fonction <code mysql_real_escape_string</code>.
Ca pourrait marcher avec ça aussi non ?
0
Bonjour

Oui ça marche, ça sert même précisément à ça. En plus, ça résout d'autres cas que celui de l'apostrophe (retour chariot/fin de ligne par exemple), et tu n'as pas de stripslashes à faire quand tu relis tes champs.
Tout bénef.
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51 > toto
6 août 2008 à 09:59
Autant pour moi alors. Je ne l'utilise pas.
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
5 août 2008 à 19:08
Non je ne penses pas ;) Ca sert à autre chose.

N'oublies pas de mettre "Résolu" si ça fonctionne.

Bonne fin de journée.
0

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+
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
6 août 2008 à 09:43
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.
0
oscarapace Messages postés 56 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 19 juin 2009 14
6 août 2008 à 15:43
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
0