dongzhong3688 2015-07-11 07:22 采纳率: 0%
浏览 25
已采纳

如何从php中的mysqli存储过程中检索出参数?

I want to access OUT parameter, from my mysqli database using stored procedures, and save it in php variable for printing message on web page.

My Stored Procedure Is:

DELIMITER $$
CREATE procedure insertUser (IN _name varchar(50), IN _username varchar(50), IN _password varchar(50), IN _email varchar(50), IN _cellNumber int(11), IN _estateName varchar(50), OUT _rply varchar(50))


BEGIN

DECLARE count1 int;
DECLARE count2 int;
DECLARE varEstateId int;
DECLARE _result varchar(50);

select COUNT(*) into count1 from users where username = _username;
select COUNT(*) into count2 from users where email = _email;

if (count1+count2 < 1)
THEN
insert into users (username , passkey , email) VALUES (_username ,_password,_email);
insert into estatedetails (estateName, estateOwnerUsername) 
values  (_estateName, _username);
SELECT estateId into varEstateId from estatedetails where estateOwnerUsername = _username; 
insert into usersdetail (username, name, cell1, estateId, accountType) 
VALUES (_username, _name, _cellNumber, varEstateId, 'owner');
set _result = 'inserted';
else 
set _result = 'alreadyExist';
end IF;
set _rply = _result;

END$$
DELIMITER;

My php side code for calling stored procedure is: (Incomplete Code)

$db = new mysqli('localhost', 'root', '', 'estatelink');
$stmt=$db->prepare("CALL insertUser(?,?,?,?,?,?,?)");
$stmt->bind_param('ssssiss',$name, $username, $password, $email, $num, $estate_name, $rply);
$stmt->execute();
$result= $rply;

Note: My query is executing perfectly inserting data with success. My only issue is that how can I access OUT parameter in this case it is $rply.

Thanks in Advance.

  • 写回答

2条回答 默认 最新

  • douyu4822 2015-07-11 07:40
    关注

    You do not use your output parameter. You can set its value, like this:

    set @_rply = 'foobar';
    

    You can use it, like this:

    $db->multi_query( "CALL insertUser($name,$username,$password,$email,$cellNumber,$estateName,@_rply);SELECT @_rply as _rply" );
    $db->next_result();            // flush the null RS from the call
    $rs=$db->store_result();       // get the RS containing the id
    echo $rs->fetch_object()->_rply, "
    ";
    $rs->free();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看