Type
Résolu
Sony
-
Marco la baraque Messages postés 1030 Statut Contributeur -
Marco la baraque Messages postés 1030 Statut Contributeur -
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.
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.
Configuration: Windows XP Firefox 3.0.5
1 réponse
-
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-
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- 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, - 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 ;)
-