Trigger / caractère echappement ss MySQL

Trigger / caractère echappement ss MySQL - SQL/NoSQL - Programmation

Marsh Posté le 25-03-2008 à 16:49:39    

Yop,
 
J'essaie de monter une petite page php qui attaque une BD mysql qui récupère des logs de serveurs d'authentification (les serveurs écrivent dans la BD en passant par un lecteur ODBC).
Mon soucis : j'ai un champ qui correspond au nom d'utilisateur, celui-ci peut contenir le nom du domaine avec un anti-slash : DOMAINE\user
le problème c'est que dans ma table, l'anti-slash est supprimé ce qui pose des soucis d'affichage & de recherche ensuite.
 
J'essaie de voir si c'est possible de modifier ce champ pour "protéger" avec un trigger, mais visiblement la syntaxe ne lui va pas (est-ce qu'il n'y a que ça ??) :

Code :
  1. CREATE trigger slashadd AFTER INSERT ON `testpass` FOR EACH ROW
  2. BEGIN
  3. DECLARE user varchar(20);
  4. SET user = OLD.`User_Name`
  5. SET new.`User_Name` = REPLACE ( $user , 'domain', 'domain\\' )
  6. END


 
Si quelqu'un a une idée (avec ou sans trigger) pour pouvoir afficher ces login sans soucis je suis preneur !
 
Merci d'avance

Reply

Marsh Posté le 25-03-2008 à 16:49:39   

Reply

Marsh Posté le 28-03-2008 à 02:49:07    

interdire mysql d'utiliser les séquences d'échappement ANSI, et ne repose que sur le standard SQL.
 
le \ n'est pas du tout un caractère d'échappement dans la norme SQL, donc aucune raison pour que mysql te le zappe

Reply

Marsh Posté le 28-03-2008 à 09:40:21    

Et petite question bête, comment fait on ceci ?
J'avais essayé de trouver/changer les caractères échappés par mySQL mais je n'ai pas trouvé la bonne option.  
Si tu as ça en stock (ou quelqu'un d'autre :)) je suis preneur..
 
Merci
 
[edit] : j'ai rajouter l'option 'ansi' dans my.ini, mais l'antislash est toujours echappé.
Pour info, je suis sous easyphp/windows, y a t-il un moyen de vérifier que le serveur mysql est bien lancer avec l'option ansi ?


Message édité par ketchupy le 28-03-2008 à 11:14:38
Reply

Marsh Posté le 28-03-2008 à 11:41:15    

RESOLU !!  
 
Finalement, j'ai trouvé la bonne option à mettre dans le my.ini :
 

Code :
  1. [mysqld]
  2. set-variable=sql-mode=NO_BACKSLASH_ESCAPES


 
Et plus besoin de protéger les '\' :)
Merci bien :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed