存储过程准备语句bug mysql php

时间:2014-09-03 19:39:29

标签: php mysql stored-procedures prepared-statement

这是我的存储过程:

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `testProc`(IN num INT, INOUT num2 INT(11))
BEGIN
    set num2 = num+num2+7;
END

以下是调用它的代码:

if ($stmt = mysqli_prepare($con, 'call testProc(?,?)')) {
    mysqli_stmt_bind_param($stmt, 'ii', $type, $newId);
    mysqli_stmt_execute($stmt);
    echo $newId;
    exit;
    }

这是我得到的错误:

<b>Warning</b>:  mysqli_stmt_execute(): Premature end of data (mysqlnd_wireprotocol.c:1116) in

我不明白。如此简单的事情如何失败?我试图设置一个简单的例子,当我跑到这个砖墙时,我只是试图弄清楚如何从一个带有存储过程的预准备语句中获取一个值。请帮忙,因为直到我能解决这个问题我才能提供一个例子,所以我无法解决我的真正问题。感谢。

1 个答案:

答案 0 :(得分:1)

我认为你应该在bind_param之后使用bind_result。

查看http://php.net/manual/en/mysqli-stmt.bind-result.php

以及之前的堆栈溢出问题:mysqli bind_param() fatal error