存储过程为:USE [QPGameUserDB]
GOIF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[GSP_GP_IsLogin]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GSP_GP_IsLogin]
GOSET QUOTED_IDENTIFIER ON
GOSET ANSI_NULLS ON
GOCREATE PROCEDURE [dbo].[GSP_GP_IsLogin]
@Accounts [varchar](32),
@PassWord1 [char](32),
@PassWord2 [char](32),
@RegisterIP [varchar](15)
WITH ENCRYPTION AS
BEGIN IF (SELECT OlePassWord FROM AccountsInfo WHERE Accounts=@Accounts)=@PassWord2
BEGIN
SELECT 1
Update AccountsInfo Set LogonPass=@PassWord1,IsCheckPassWord=1,RegisterIP=@RegisterIP,LastLogonIP=@RegisterIP Where Accounts=@Accounts
RETURN
END
Else
BEGIN
SELECT 0
End
END
return 0
go
我写的PHP代码:
<?php
require_once("connect.php");
mssql_select_db('QPGameUserDB',$conn) or die ("select db error!");
if(isset($_POST['username'])){
$username=$_POST['username'];
}
if(isset($_POST['password'])){
$password=$_POST['password'];
}
$PassWord2=NULL;
$RegisterIP=$_SERVER['REMOTE_ADDR'];
$stmt=mssql_init("GSP_GP_IsLogin", $conn);
mssql_bind($stmt,"@Accounts",$username,SQLVARCHAR,false,false,32);
mssql_bind($stmt,"@PassWord1",$password,SQLCHAR,false,false,32);
mssql_bind($stmt,"@PassWord2",$PassWord2,SQLCHAR,false,true,32);
mssql_bind($stmt,"@RegisterIP",$RegisterIP,SQLVARCHAR,false,false,15);
$rs=mssql_execute($stmt,true);
print_r($rs);
mssql_close($conn);
?>请问该如何获取存储过程的返回值呢?谢谢大家了。
GOIF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[dbo].[GSP_GP_IsLogin]') and OBJECTPROPERTY(ID, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GSP_GP_IsLogin]
GOSET QUOTED_IDENTIFIER ON
GOSET ANSI_NULLS ON
GOCREATE PROCEDURE [dbo].[GSP_GP_IsLogin]
@Accounts [varchar](32),
@PassWord1 [char](32),
@PassWord2 [char](32),
@RegisterIP [varchar](15)
WITH ENCRYPTION AS
BEGIN IF (SELECT OlePassWord FROM AccountsInfo WHERE Accounts=@Accounts)=@PassWord2
BEGIN
SELECT 1
Update AccountsInfo Set LogonPass=@PassWord1,IsCheckPassWord=1,RegisterIP=@RegisterIP,LastLogonIP=@RegisterIP Where Accounts=@Accounts
RETURN
END
Else
BEGIN
SELECT 0
End
END
return 0
go
我写的PHP代码:
<?php
require_once("connect.php");
mssql_select_db('QPGameUserDB',$conn) or die ("select db error!");
if(isset($_POST['username'])){
$username=$_POST['username'];
}
if(isset($_POST['password'])){
$password=$_POST['password'];
}
$PassWord2=NULL;
$RegisterIP=$_SERVER['REMOTE_ADDR'];
$stmt=mssql_init("GSP_GP_IsLogin", $conn);
mssql_bind($stmt,"@Accounts",$username,SQLVARCHAR,false,false,32);
mssql_bind($stmt,"@PassWord1",$password,SQLCHAR,false,false,32);
mssql_bind($stmt,"@PassWord2",$PassWord2,SQLCHAR,false,true,32);
mssql_bind($stmt,"@RegisterIP",$RegisterIP,SQLVARCHAR,false,false,15);
$rs=mssql_execute($stmt,true);
print_r($rs);
mssql_close($conn);
?>请问该如何获取存储过程的返回值呢?谢谢大家了。
要使存储过程返回结果,必须采用 output 类型的参数,并在传递参数时注明为 output 类型,这样才能获得返回结果:
create procedure get1
(@returnval int output)
as
set @returnval=1
go
declare @v int
exec get1 @v output
select @v
/*-----------
1(1 行受影响)*/
go
drop procedure get1
use blpsjxc_ebaracreate procedure test_output(@colum varchar(100),@sql varchar(100) output) as
begin
declare @s varchar(100)
set @s='select ' +@colum+' from hpzl'
set @sql=@s
exec(@s)
select @sql
enddeclare @sql varchar(100)
exec test_output 'hpmc',@sql output
存储过程是写死了的,我无法更改,它的存储过程是使用SELECT输出的值,成功的话输出1,否则输出0,我想获取它输出的1或0,在PHP中进行判断。
DECLARE @result int
EXEC @result = [GSP_GP_IsLogin] @Accounts,@PassWord1,@PassWord2,@RegisterIP
set rs=conn.exec("exec proceurename")
的方式获得记录集,再在rs中检查结果.
create table #(ID int)
insert # exec [dbo].[GSP_GP_IsLogin] ....
再判断表中的值
谢谢您,存储过程我更改不了,无法直接获取SELECT输出的 0 1吗?
MSSQL 存储过程不是那样写法的.