【问题标题】:How to retrieve out parameter from mysqli stored procedure in php?如何从 php 中的 mysqli 存储过程中检索出参数?
【发布时间】:2015-07-11 07:22:59
【问题描述】:

我想使用存储过程从我的mysqli数据库中访问OUT参数,并将其保存在php变量中以便在网页上打印消息。

我的存储过程是:

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;

我调用存储过程的php端代码是:(不完整代码)

$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;

注意:我的查询正在成功执行完美插入数据。我唯一的问题是在这种情况下如何访问 OUT 参数是 $rply。

提前致谢。

【问题讨论】:

    标签: php stored-procedures mysqli


    【解决方案1】:

    你没有使用你的输出参数。您可以设置它的值,如下所示:

    set @_rply = 'foobar';
    

    你可以像这样使用它:

    $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, "\n";
    $rs->free();
    

    【讨论】:

      【解决方案2】:

      您可以在过程中使用 SELECT 语句并像使用典型查询一样获取结果

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 2020-08-29
        • 1970-01-01
        • 1970-01-01
        • 2010-12-13
        • 2023-04-05
        相关资源
        最近更新 更多