Problème despécialisation php/MS SQL

Joelindien27 Messages postés 27 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 19 juillet 2005 - 18 juil. 2005 à 13:59
cs_Cosinus12 Messages postés 8 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 2 janvier 2008 - 2 janv. 2008 à 14:44
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

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 juil. 2005 à 15:45
Salut,



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






<li>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 juil. 2005 à 15:48
Salut,



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






<li>
0
Joelindien27 Messages postés 27 Date d'inscription vendredi 24 janvier 2003 Statut Membre Dernière intervention 19 juillet 2005
19 juil. 2005 à 15:37
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"
0
cs_Cosinus12 Messages postés 8 Date d'inscription mercredi 18 juin 2003 Statut Membre Dernière intervention 2 janvier 2008
2 janv. 2008 à 14:44
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
0
Rejoignez-nous