Addslashe avec une requette sql server ?

Résolu/Fermé
mireille Messages postés 14 Date d'inscription jeudi 14 septembre 2000 Statut Membre Dernière intervention 19 février 2014 - 19 sept. 2007 à 10:59
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 - 21 sept. 2007 à 18:06
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 2480 Date d'inscription vendredi 29 octobre 2004 Statut Contributeur Dernière intervention 13 février 2018 617
19 sept. 2007 à 22:06
Salut,

Un peu de code pour agrémenter ça ? Comment tu t'y ai pris ?
0
PhP Messages postés 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
19 sept. 2007 à 23:16
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
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 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
20 sept. 2007 à 14:33
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 jeudi 14 septembre 2000 Statut Membre Dernière intervention 19 février 2014
21 sept. 2007 à 10:20
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 1767 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
21 sept. 2007 à 18:06
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