Problème despécialisation php/MS SQL

Signaler
Messages postés
27
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
19 juillet 2005
-
Messages postés
8
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
2 janvier 2008
-
Bonjour à tous,

J'ai un énorme problème avec mes requêtes INSERT et UPDATE en php/MS SQL
Dès qu'il y a une apostrophe dans un des champs la requête plantait même en prenant le soin d'abuser des addslashes() comme je fais d'habitude.
J'ai appris par la suite que le caractère de despécialisation sous MS SQL était un simple quote ( ' ) et non pas un antislash ( \ )
comme sous MySQL.

Maintenant je me sers donc de la fonction str_replace pour ajouter un simple quote avant l'apostrophe.
L'insert et l'update se font merveilleusement puisque j'arrive à retrouver l'enregistrement.
Mais au niveau php, ça plante.

Voici l'exemple :
<?php
//Ajout de xxx
function add_xxx($xxx_pays,$xxx_ville,etc...){
//----------------------------------------------------->
$clear_xxx_pays= str_replace("'", "''", "$xxx_pays");;
$clear_xxx_ville = str_replace("'", "''", "$xxx_ville");;
etc...

//Verif etc...

require("../conf/conf.inc.php");
$db = mssql_connect("$sql_serveur","$sql_user", "$sql_passwd");
$db or die("$err_serveur_connect");
$result = mssql_select_db("$sql_bdd",$db);
$result = mssql_query("INSERT INTO xxx (xxx_pays,xxx_ville)
VALUES ('$clear_xxx_pays','$clear_xxx_ville')",$db);

if($result)
{
echo"OK";


}else{
echo"Pas OK";
}

//----------------------------------------------------->
}

Mon INSERT se fait impeccable mais j'ai le message d'erreur Pas OK alors que tout se passe bien...
Donc la variable $result n'est pas true mais false alors que tout se passe bien.

Je suis complètement paumé, merci de votre aide :)

Joe l'indien
Scalpeur dans le salon "Le tipi"

4 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



passe par addslashes, ça ne plantera pas si tu t'y prends bien






<li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



passe par addslashes, ça ne plantera pas si tu t'y prends bien






<li>
Messages postés
27
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
19 juillet 2005

Salut Anthomicro,

Comme je l'ai expliqué, j'utilisais addslashes() avant mais le caractère de déspécialisation sous MS SQL n'est pas un antislash comme sous MySQL mais un simple quote.

Donc malheureusement ça ne résout pas le problème...

Joe l'indien
Scalpeur dans le salon "Le tipi"
Messages postés
8
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
2 janvier 2008

Slt Joelindien27,

J'ai le même problème que toi, l'AddSlashes() ne marche que pour des requetes MySQL et non MSSQL. Sauf erreur de ma part Anthomicro !!!

Existe-t-il une fonction pré-définit de php pour ce genre de cas ? As-tu depuis trouvé une solution plus générique ?

Cordialement,

Cosinus