par
vinceee » 15 juil. 2014, 16:02
Salut !
Alors tout d'abord je me sert de php sur une BDD MS SQL . je peux donc accédé a tout les fonctions sqlsrv_* .
J'arrive a faire des requétes simple . Mais quand j'essaie de faire un CALL sur une procédure stockée je n'y arrive pas .
Voila le code :
$sql = "CALL CheckUserAccount(?,?);"; //l’erreur se situe apriori ici . je donne plus bas la procédure stocké.
$params=array($identifiant,$motdepasse); // 2 Strings en paramètre
$stmt = sqlsrv_query($conn, $sql, $params);
Il n'y a pas l'air d'avoir de problème ni avec le mot de passe ni avec l'identifiant car je l'ai déjà utilisé pour faire d'autres requêtes.
USE [MACHX]
GO
/****** Object: StoredProcedure [dbo].[sp_CheckUserAccount] Script Date: 15/07/2014 15:10:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*-----------------------------------------------------------------------------
Check if user exist in the database
-----------------------------------------------------------------------------*/
ALTER Procedure [dbo].[sp_CheckUserAccount](@UserLogon varchar(50), @UserPwd varchar(50))
As
set nocount on
set quoted_identifier on
declare @LogonId int
select @LogonId = XCMT_U_NUM
from XCMT_USERS
where XCMT_U_LOGON = @UserLogon
and XCMT_U_PASSWORD = @UserPwd
if @LogonId is not null
begin
select
'UID' = XCMT_U_UID, --UID
'UserId' = XCMT_U_NUM, --operator id
'UserName' = XCMT_U_NAME, --user name
'UserCompanyID' = XCMT_U_COMPANY,
'UserCompany' = XCMT_C_LABEL,
'UserLastName' = XCMT_U_LAST_NAME, --Last Name
'UserFirstName' = XCMT_U_FIRST_NAME, --Fisrt name
'LastAccess' = convert(varchar(10), XCMT_U_LAST_ACCESS, 101)+' '+ convert(varchar(8), XCMT_U_LAST_ACCESS, 108),
'EntityId' = XCMT_U_ENTITY, --entity id
'EntityName' = XCMT_ENT_LABEL, --entity name
'Email' = XCMT_U_EMAIL,
'Quizz' = XCMT_U_QUIZZ,
'Rights' = XCMT_U_AUTORISATION_LEVEL,
'Activation' = XCMT_U_ACTIVATION,
'EntityActivation' = XCMT_ENT_ACTIVATION,
'DefaultPage' = XCMT_U_DEFAULT_PAGE,
'OutOfOffice' = XCMT_U_OUTOFFICE_STATUS,
'Country' = XCMT_U_COUNTRY,
'Validation' = XCMT_U_VALIDATION,
'Language' = XCMT_U_LANGUAGE,
'FTID' = XCMT_U_FTID,
'GUARDIAN' = XCMT_U_GUARDIAN,
'Phone' = XCMT_U_PHONE,
'Theme' = XCMT_U_THEME,
'UseXbook' = XCMT_U_USE_XBOOK_STATUS
from XCMT_USERS, XCMT_ENTITY, XCMT_COMPANY
where XCMT_U_NUM = @LogonId
and XCMT_U_ENTITY = XCMT_ENT_NUM
and XCMT_U_COMPANY = XCMT_C_NUM
end
else
begin
--> if the user does not exists
return 1
end
return 0
L'erreur que je reçoit " erreur de syntaxe près @P1"( premier "?" la ligne ou il y a l'erreur .)
Je vous remercie par avance de votre aide

Salut !
Alors tout d'abord je me sert de php sur une BDD MS SQL . je peux donc accédé a tout les fonctions sqlsrv_* .
J'arrive a faire des requétes simple . Mais quand j'essaie de faire un CALL sur une procédure stockée je n'y arrive pas .
Voila le code :
[php] $sql = "CALL CheckUserAccount(?,?);"; //l’erreur se situe apriori ici . je donne plus bas la procédure stocké.
$params=array($identifiant,$motdepasse); // 2 Strings en paramètre
$stmt = sqlsrv_query($conn, $sql, $params);
[/php]
Il n'y a pas l'air d'avoir de problème ni avec le mot de passe ni avec l'identifiant car je l'ai déjà utilisé pour faire d'autres requêtes.
[sql]USE [MACHX]
GO
/****** Object: StoredProcedure [dbo].[sp_CheckUserAccount] Script Date: 15/07/2014 15:10:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*-----------------------------------------------------------------------------
Check if user exist in the database
-----------------------------------------------------------------------------*/
ALTER Procedure [dbo].[sp_CheckUserAccount](@UserLogon varchar(50), @UserPwd varchar(50))
As
set nocount on
set quoted_identifier on
declare @LogonId int
select @LogonId = XCMT_U_NUM
from XCMT_USERS
where XCMT_U_LOGON = @UserLogon
and XCMT_U_PASSWORD = @UserPwd
if @LogonId is not null
begin
select
'UID' = XCMT_U_UID, --UID
'UserId' = XCMT_U_NUM, --operator id
'UserName' = XCMT_U_NAME, --user name
'UserCompanyID' = XCMT_U_COMPANY,
'UserCompany' = XCMT_C_LABEL,
'UserLastName' = XCMT_U_LAST_NAME, --Last Name
'UserFirstName' = XCMT_U_FIRST_NAME, --Fisrt name
'LastAccess' = convert(varchar(10), XCMT_U_LAST_ACCESS, 101)+' '+ convert(varchar(8), XCMT_U_LAST_ACCESS, 108),
'EntityId' = XCMT_U_ENTITY, --entity id
'EntityName' = XCMT_ENT_LABEL, --entity name
'Email' = XCMT_U_EMAIL,
'Quizz' = XCMT_U_QUIZZ,
'Rights' = XCMT_U_AUTORISATION_LEVEL,
'Activation' = XCMT_U_ACTIVATION,
'EntityActivation' = XCMT_ENT_ACTIVATION,
'DefaultPage' = XCMT_U_DEFAULT_PAGE,
'OutOfOffice' = XCMT_U_OUTOFFICE_STATUS,
'Country' = XCMT_U_COUNTRY,
'Validation' = XCMT_U_VALIDATION,
'Language' = XCMT_U_LANGUAGE,
'FTID' = XCMT_U_FTID,
'GUARDIAN' = XCMT_U_GUARDIAN,
'Phone' = XCMT_U_PHONE,
'Theme' = XCMT_U_THEME,
'UseXbook' = XCMT_U_USE_XBOOK_STATUS
from XCMT_USERS, XCMT_ENTITY, XCMT_COMPANY
where XCMT_U_NUM = @LogonId
and XCMT_U_ENTITY = XCMT_ENT_NUM
and XCMT_U_COMPANY = XCMT_C_NUM
end
else
begin
--> if the user does not exists
return 1
end
return 0[/sql]
L'erreur que je reçoit " erreur de syntaxe près @P1"( premier "?" la ligne ou il y a l'erreur .)
Je vous remercie par avance de votre aide :)