Type

Résolu
Sony -  
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Voila mon problème :

j'ai une table avec comme clé primaire un champ ID de type uniqueidentifier et j'aimerais exécuter la requête suivante:

$id=$_REQUEST["id_client"];
$res=mssql_query("select Contact_Name from contact where ID='$id' order by Contact_Name;");

la variable $id récupère la clé primaire ID de type uniqueidentifier;

Lorsque je lance ce script le message d'erreur suivant s'affiche :

Warning: mssql_query() [function.mssql-query]: message: Échec de la conversion d'une chaîne de caractères en uniqueidentifier.

En revanche lorsque que je remplace la variable directement par une valeur de l'ID tel que : 928D7F36-9A31-42FC-98CF-00AEC2FE665C tous marche bien :

$res=mssql_query("select Contact_Name from contact where ID='928D7F36-9A31-42FC-98CF-00AEC2FE665C' order by Contact_Name;");


- Dois-je effectuer une conversion de la variables $id avant de l'utiliser dans la requête ?
- Avez vous une solution a mon problème ?

Merci.
A voir également:

1 réponse

mikebzh Messages postés 127 Date d'inscription   Statut Membre Dernière intervention   28
 
Je ne sais pas en quel language tu programmes mais tu dois oublier de concatener ta chaine sql
essaie un truc du style
$res=mssql_query("select Contact_Name from contact where ID=''' & $id & "' order by Contact_Name;");

Tu vois ce que je veux dire
A plus
0
Sony
 
Je programme en PHP et normalement je n'ai pas besoin de container la requête, et si dans un autre cas cela pourrait marcher la syntaxe serait la suivante :


$res=mssql_query("select Contact_Name from contact where ID='".echo $id. "' order by Contact_Name;");

mais le problème du type uniqueidentifier c'est que l'affichage (echo $id) de la variable renvoie une chaine incohérente du type : Ó_&â91òH¦0˜xçû6p

c'est pourquoi j'avais penser a une conversion mais a vrai dire j'en est aucune idée xD
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329 > Sony
 
Bonjour,
Ca aurait été
$res=mssql_query("select Contact_Name from contact where ID='".$id. "' order by Contact_Name;"); plutôt...

Pour ton problème, c'est parce qu'il ne faut pas utiliser $_REQUEST, mais $_POST ou $_GET (ça dépend de la méthode d'envoi de ton formulaire, à configurer en html).

Cordialement,
0
Sony > Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour Marco,

L'utilisation de $_POST ( en accord avec mon formulaire) ne change rien, toujours la même erreur qui s'affiche :

Warning: mssql_query() [function.mssql-query]: message: Échec de la conversion d'une chaîne de caractères en uniqueidentifier.
0
Sony > Sony
 
C'est bon j'ai trouvé !!!! =) =)

en faite il fallait convertir le type uniqueidentifier en chaine de caractère et pour cela une fonction spécifique a sql server existe, il s'agit de la fonction mssql_guid_string()

pour mon exemple cela donne :


$id=$_POST["id_client"];
$str_id=mssql_guid_string($id);
$res=mssql_query("select Contact_Name from contact where ID='$str_id' order by Contact_Name;");

Voila pour les prochains qui aurait des problèmes ;)
0
Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329 > Sony
 
Merci de ton retour.
J'ai tout de même du mal à comprendre pourquoi une chaîne dans ta request est de type uniqueidentifier...
Enfin, le problème est résolu !

Cordialement,
0