Addslashe avec une requette sql server ?

Résolu
mireille Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

6 réponses

s.spark Messages postés 2485 Date d'inscription   Statut Contributeur Dernière intervention   618
 
Salut,

Un peu de code pour agrémenter ça ? Comment tu t'y ai pris ?
0
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
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
mireille
 
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
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mireille Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
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
PhP Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   606
 
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