|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Nouveau Membre du Club
![]() Inscription : février 2006 Messages : 197 ![]() |
Bonne nuit
Je me bats avec PHP et SQL Serveur, pour essayer d'inserer une chaine dans ma base de donnée de manière securisée. La chaine en question : Citation:
Je me perds dans les ' et " dans mon INSERT et au final ca marche pas, si qqu a une idée ? MERCI de votre aide. |
|
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() |
normallement ton seul probleme serais le simple quote puisque c la seul syntax officiel de SQL.
apres fo pas melanger PHP et SQL Server. Il faut se dire PHP va mon pondre une chaine comme ca et qui sera transmit à SQL serveur. Coté php tu fait ce que tu veux, mais au final, voila ce qu'il faut transmettre à SQL serveur par exemple: INSERT INTO table ( nom, prenom ) VALUES( 'BUI', 'Nicolas' ); Donc il faut savoir comme se comporte une chaine en PHP. une chaine en php peut avoir deux type de délimitateur " (double) et ' (simple). $s = 'Ma chaine'; $s = "Ma chaine"; Dans une chaine delimité par un simple quote pour faire apparaitre un simple quote, on place un antislash: $s = '-- J\'suis la --'; idem pour la double $s = "Bienvenu Nicolas, alias le \"BOSS\" !"; supposons que qu'on insere une phase ds la base: J'suis nicolas bui d'abord, il fo choisir en php si on entoure avec des simples des doubles. $s = "J'suis nicolas bui"; ou $s = 'J\'suis nicolas bui'; donc en sortie on a ==> J'suis nicolas bui Mais maintenant on le balance dans le SQL : $sql ="INSERT INTO .... ( '". $s ."' )"; cela donne : INSERT INTO ... ( 'J'suis nicolas bui' ) Aucun SGBD n'aime ... il faut faire soit doubler le simple quote : INSERT INTO ... ( 'J''suis nicolas bui' ) ou foutre un anti slash : INSERT INTO ... ( 'J\'suis nicolas bui' ); donc en php $sql ="INSERT INTO .... ( '". str_replace( "'", "''", $s ) ."' )"; ou $sql ="INSERT INTO .... ( '". str_replace( "'", "\\'", $s ) ."' )"; Et normallement ca passe |
|
10
|
|
|
#3 |
|
Membre habitué
![]() |
Donc pour ton :
Residence " Les Jeux d'O " on doit avoir INSERT ... ( 'Residence " Les Jeux d''O "' ) ou INSERT ... ( 'Residence " Les Jeux d\'O "' ) coté php $s = "Residence \" Les Jeux d'O \""; puis $sql = "INSERT ... ( '" . str_replace( "'", "''", $s ) . "' );"; ou $sql = "INSERT ... ( '" . str_replace( "'", "\'", $s ) . "' );"; Voila bonne chance |
|
00
|
Copyright © 2000-2012 - www.developpez.com