调用的过程如下...
实在不知道哪边有问题
$conn=new PDO('mssql:host=192.168.1.245;dbname=usercenter','sa','123');
$stmt=$conn->prepare("prLS_Register(?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bindParam(1,$v1,PDO::PARAM_STR,4000);
$stmt->bindParam(2,$v2,PDO::PARAM_STR,4000);
$stmt->bindParam(3,$v3,PDO::PARAM_STR,4000);
$stmt->bindParam(4,$v4,PDO::PARAM_STR,4000);
$stmt->bindParam(5,$v5,PDO::PARAM_INT,4000);
$stmt->bindParam(6,$v6,PDO::PARAM_INT,4000);
$stmt->bindParam(7,$v7,PDO::PARAM_STR,4000);
$stmt->bindParam(8,$v8,PDO::PARAM_STR,4000);
$stmt->bindParam(9,$v9,PDO::PARAM_STR,4000);
$stmt->bindParam(10,$v10,PDO::PARAM_STR,4000);
$stmt->bindParam(11,$v11,PDO::PARAM_STR,4000);
$stmt->bindParam(12,$v12,PDO::PARAM_STR,4000);
$stmt->bindParam(13,$v13,PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,400);
$v1="loginname11";
$v2="pass1word11";
$v3="pass1word211";
$v4="nick121name";
$v5=1;
$v6=0;
$v7="localhost";
$v8="127.0.0.1";
$v9="13913913913";
$v10="[email protected]";
$v11="320320320320320320";
$v12="";
$v13="";var_dump($stmt);
$stmt->execute();
}catch(PDOException $ex){
echo "abc";
echo $ex->getMessage();
}
执行以后总是无法把数据插入到数据库中
数据库是sql2005
Apache Web Server Version 2.2.8
PHP Version 5.2.6
存储过程 prLS_Register 写的正确吗?
错误在这个调用的过程如下...
实在不知道哪边有问题
$stmt=$conn->prepare("prLS_Register(?,?,?,?,?,?,?,?,?,?,?,?,?)");
调用存储过程要加exec,我最开始按照文档上来的 用的是call
其次后面的参数外围不用加括号,去掉就好了...
用exec就可以..
然后我那个v13是接受的输出参数,总是不能接收到.这个是怎么回事..
我用mssql_init来执行的话,是能得到返回值和输出参数的set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go/*****************************************************************************
* Name: 用户注册接口
* Desc:
* Author: zhs007
* CrtDate: 2006.08.24
* Modify:
* ModifyDate:
* Memo:
* Return:
* >0 用户的ID号
* 其他:失败,失败的信息放在@chvErrMsg中
*****************************************************************************/
ALTER PROCEDURE [dbo].[prLS_Register]
@chvLoginName varchar(32), -- 登录名
@chvPassword varchar(32), -- 密码
@chvPassword2 varchar(32), -- 二级密码,用于转账
@chvNickName varchar(32), -- 昵称
@intLogo smallint, -- 脸谱ID
@bitSex bit, -- 性别 0 男 1 女
@chvRegisterServer varchar(15), -- 注册服务器名
@chvIPAddress varchar(15), -- 用户登记IP地址
@chvMobileID varchar(11), --用户手机
@chvEmail varchar(50), --邮箱
@chvIDNumber varchar(22), --身份证
@chvTjUser varchar(32), --推荐人
@chvErrMsg varchar(128) output -- 出错信息
AS
SET NOCOUNT ON -- 节约反馈资源
SET XACT_ABORT ONSET @chvErrMsg = ''
-- 首先将左右空格去掉
SET @chvLoginName = LTRIM(RTRIM(@chvLoginName))
SET @chvPassword = LTRIM(RTRIM(@chvPassword))
-- 检查帐号是否是保留字符
DECLARE @intReturnValue int
SET @intReturnValue = [dbo].[funIfExistsReserveWord](@chvLoginName, 1)
IF @intReturnValue = 1
BEGIN
SET @chvErrMsg = '注册失败!您的注册名字中含有系统保留的单词,请您换个合适的名字再重新注册!'
RETURN -1
END
SET @intReturnValue = [dbo].[funIfExistsReserveWord](@chvNickName, 1)
IF @intReturnValue = 1
BEGIN
SET @chvErrMsg = '注册失败!您的昵称中含有系统保留的单词,请您换个合适的昵称再重新注册!'
RETURN -1
END
-- 检查账号
if exists (select UserID from [dbo].[AllUser] where [LoginName] = @chvLoginName)
begin
SET @chvErrMsg = '您的账号已被别人使用,请您换个合适的账号再重新注册!'
RETURN -1
end
-- 检查昵称
if exists (select UserID from [dbo].[AllUser] where [NickName] = @chvNickName)
begin
SET @chvErrMsg = '您的昵称已被别人使用,请您换个合适的昵称再重新注册!'
RETURN -1
end
if len(@chvIDNumber) <> 15 and len(@chvIDNumber) <> 18
begin
SET @chvErrMsg = '您填写的身份证号码有误,请填写正确的身份证号码!'
RETURN -1
end
DECLARE @tjUserID int
if @chvTjUser <>''
begin
--select @tjUserID = [UserID] from [AllUser] where [NickName] = @chvTjUser
select @tjUserID = [UserID] from [AllUser] where [userid] = @chvTjUser
if @@rowcount = 0
begin
SET @chvErrMsg = '您填写的推荐人昵称错误,请填写正确的推荐人!'
RETURN -1
end
end
else
set @tjUserID = 0
-- 正常注册
INSERT INTO [dbo].[AllUser]
([LoginName], [Password], [Password2], [NickName], [Sex], [Logo], [TjUser], [UserType], [RegisterTime], [RegisterServer], [IPAddress], [LastLoginTime], [LastServerID], [RightCode])
VALUES
(@chvLoginName, @chvPassword, @chvPassword2, @chvNickName, @bitSex, @intLogo, @tjUserID, 3, GETDATE(), @chvRegisterServer, @chvIPAddress, '2010-01-01', 0, 8)
IF @@ERROR <> 0
BEGIN
SET @chvErrMsg = '注册失败,请再试一遍!'
RETURN -1
END
DECLARE @intUserID int
set @intUserID = @@IDENTITYinsert into [LogCenter].[dbo].[MainLog] (uid, ctrlid) values (@intUserID, 1)INSERT INTO [UserCenter]. [dbo].[UserDetailInfo] (UserID,Mobile,EMail,IDNumber)values(@intUserID,@chvMobileID,@chvEmail,@chvIDNumber)
--注册之后送给用户的东西
exec prLS_Register_Gift @intUserID
--注册之后送给推荐用户送东西
if @tjUserID is not null and @tjUserID > 0
exec prLS_Register_GiftTJ @intUserID, @tjUserIDRETURN @intUserID