Caracteres " ' " en SQL + PHP

DAG -  
oscarapace Messages postés 56 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   51
 
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
DAG
 
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
DAG
 
Juste avant de partir, j'avais vu une fonction <code mysql_real_escape_string</code>.
Ca pourrait marcher avec ça aussi non ?
0
toto
 
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   Statut Membre Dernière intervention   51 > toto
 
Autant pour moi alors. Je ne l'utilise pas.
0
CaPiT Messages postés 609 Date d'inscription   Statut Membre Dernière intervention   51
 
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
DAG
 
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   Statut Membre Dernière intervention   51
 
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   Statut Membre Dernière intervention   14
 
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