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条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度