[Resolu] Insertion de mots contenant une quote dans un varchar

Insertion de mots contenant une quote dans un varchar [Resolu] - SQL/NoSQL - Programmation

Marsh Posté le 21-11-2005 à 23:33:00    

Grace à des expressions régulières, j'arrive à extraire de cette ligne de fichier
 
Produit:Propriete(Libelle)=Disque dur Deskstar 7K250;Propriete(Prix)=106;Propriete(UniteDeVente)=l'unité;Descriptif=Capacité de 250 Go, 3 plateaux, 6 têtes, Temps moyen d'accès : 8,5 ms;Propriete(Photo)=hdd_hitachi_7k250.jpg;Rubriques=Disques Durs|IDE
 
juste le champ unité de vente (dans ce cas, le mot l'unité)
Cependant, lorsque je veux rentrer ce champ dans ma base de données MySQL (un varchar), j'ai droit à une syntaxe incorrecte et c'est sûrement à cause de la ' qui se trouve dans le mot "l'unité"
 
Quelqun aurait un tuyau pour réussir à insérer des quotes dans un varchar svp?


Message édité par vouzico le 22-11-2005 à 08:26:15
Reply

Marsh Posté le 21-11-2005 à 23:33:00   

Reply

Marsh Posté le 22-11-2005 à 01:13:07    

Il faut doubler l'apostrophe.
Pour infos, voici ce que je fais habituellement :

Code :
  1. function apo($s1)
  2. {
  3.   $s1 = trim($s1); // enleve les espaces autour  
  4.   $s1 = trim($s1, "\xA0" ); // enleve les nbsp autour  
  5.   $s1 = stripslashes($s1); // enleve les slashs avant les apostrophes, etc.  
  6.   $s1 = str_replace("'", "''", $s1); // remplace les guillemets  
  7.   // supprime les caractères non imprimables (null, tab, backspace, ...)  
  8.   $s2 = "";
  9.   for ($i = 0; $i < strlen($s1); $i++) {
  10.      $c = substr($s1, $i, 1);
  11.      if (ord($c) >= 32)
  12.         $s2 .= $c;
  13.   }
  14.   return($s2);
  15. }
  16. ...
  17. $data1 = "L'unité";
  18. $requete = "SELECT toto FROM table1 WHERE titi='".apo($data1)."'";


Message édité par olivthill le 22-11-2005 à 01:13:40
Reply

Marsh Posté le 22-11-2005 à 08:25:30    

Marche nickel [:itm]  
 
Merci  :jap:

Reply

Sujets relatifs:

Leave a Replay

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