Addslashe avec une requette sql server ?

Résolu
Bonjour SVP pouvez vous me dire comment je doit faire pour que addslashe marche avec une requette sql server?en effet, mes variables dans le INSERT contiennent des ' j' utilise la fonction addslashe sans succès.
Configuration: Windows XP
Internet Explorer 6.0

6 réponses

  1. Contributeur
    Salut,

    Un peu de code pour agrémenter ça ? Comment tu t'y ai pris ?
    0
    1. Bsr

      J'utilise pas SLQ Server mais avec MySQL je fais ceci pour les champs texte :

      <?php
      ...
      $quand="Aujourd'hui";
      
      $query="UPDATE ma_table SET ma_periode='".addslashes($quand)."' WHERE ma_cle=2";
      ...
      ?>


      et ça fonctionne nickel ;-)

      Voilà

      0
      1. Salut chers amis.en effet je n'ai pas encore trouvé de solution mon problème. voilà mon code :

        if (($_POST['codeposte'] <> "" ) && ($_POST['libposte'] <> "") )
        {

        $poste = addslashes($_POST['codeposte']);
        $libelle = addslashes($_POST['libposte']);
        $result=mssql_query("select * from poste where code_poste='".$poste."'",$sqlconnexion);
        $exist=mssql_num_rows($result);
        if ($exist==1){?>
        <script language="JavaScript" type="text/javascript">
        alert("ce poste a déjà été enregistré");
        </script>
        <? }
        else
        mssql_query("insert into POSTE values('".$poste."','".$libelle."'",$sqlconnexion); //or die ('erreur : '.mssql_error() );
        mssql_free_result($result);

        }

        voilà le message d'erreur:

        Warning: mssql_query(): message: Ligne 1 : syntaxe incorrecte vers 'étude'. (severity 15) in c:\program files\easyphp1-8\www\gestion_objectif\form\admin_poste.php on line 17

        Warning: mssql_query(): message: Ouvrez les guillemets avant la chaîne de caractères ''. (severity 15) in c:\program files\easyphp1-8\www\gestion_objectif\form\admin_poste.php on line 17

        Warning: mssql_query(): Query failed in c:\program files\easyphp1-8\www\gestion_objectif\form\admin_poste.php on line 17
        0
        1. Bjr

          Hum il manque une parenthèse fermante dans ta requête avant ",$sql... et laisse un espace entre values et ( :

          mssql_query("insert into POSTE values ('".$poste."','".$libelle."')",$sqlconnexion); 


          De plus c'est quand même mieux de citer les champs que tu insères (attention vérifie que codepost & libposte sont bien les bons noms de champ)

          mssql_query("insert into POSTE (codeposte,libposte) values ('".$poste."','".$libelle."')",$sqlconnexion); 

          0
          1. Bjr
            C'est vrai qu'il manque un paranthèse fermante dans mon code je l'ai mise. Mais mon probléme n'est toujours pas resolu.

            Voila mon code

            $poste = $_POST['codeposte'];
            $libelle = $_POST['libposte'];
            $result=mssql_query("select * from poste where code_poste='".$poste."'",$sqlconnexion);
            $exist=mssql_num_rows($result);
            if ($exist==1){?>
            <script language="JavaScript" type="text/javascript">
            alert("ce poste a déjà été enregistré");
            </script>
            <? }
            else
            mssql_query("insert into POSTE values('".addslashes($poste)."','".addslashes($libelle)."')",$sqlconnexion); //or die ('erreur : '.mssql_error() );

            et voilà le mesage d'erreur quand je veux inserer la chaine : Chargé d'étude

            Warning: mssql_query(): message: Ligne 1 : syntaxe incorrecte vers 'etude'. (severity 15) in c:\program files\easyphp1-8\www\gestion_objectif\form\admin_poste.php on line 17

            Warning: mssql_query(): message: Ouvrez les guillemets avant la chaîne de caractères ')'. (severity 15) in c:\program files\easyphp1-8\www\gestion_objectif\form\admin_poste.php on line 17

            Warning: mssql_query(): Query failed in c:\program files\easyphp1-8\www\gestion_objectif\form\admin_poste.php on line 17

            SVP aidez moi.
            0
            1. Bsr

              Hum en faisant un tour sur https://www.php.net/addslashes on tombe sur le message suivant :

              luciano at vittoretti dot com dot br
              31-Oct-2005 12:18
              Note, this function wont work with mssql or access queries.
              Use the function above (work with arrays too).

              function addslashes_mssql($str){
                  if (is_array($str)) {
                      foreach($str AS $id => $value) {
                          $str[$id] = addslashes_mssql($value);
                      }
                  } else {
                      $str = str_replace("'", "''", $str);    
                  }
                  
                  return $str;
              }
              
              function stripslashes_mssql($str){
                  if (is_array($str)) {
                      foreach($str AS $id => $value) {
                          $str[$id] = stripslashes_mssql($value);
                      }
                  } else {
                      $str = str_replace("''", "'", $str);    
                  }
              
                  return $str;
              } 


              Hé oui mssql ne supporte pas les séquences d'escape ! Rien d'étonnant d'ailleurs de la part d'un produit Made In Micro$oft !

              A la place il faut remplacer chaque quote single ' par 2 quotes  '' (attention pas de guillemets !)


              Donc utilise la fonction stripslashes_mssql ci-dessus et ça devrait fonctionner.

              Voilà
              0