存储过程准备语句错误mysql php

存储过程准备语句错误mysql php,php,mysql,stored-procedures,prepared-statement,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($stm

以下是我的存储过程:

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
警告:mysqli_stmt_execute():中的数据过早结束(mysqlnd_wireprotocol.c:1116)

我不明白。这么简单的事情怎么会失败呢?当我试图建立一个简单的示例时,遇到了这堵砖墙,当时我正试图解决如何通过存储过程从准备好的语句中获取值的问题。请帮忙,因为在我解决这个问题之前,我无法提供一个例子,所以我无法解决我真正的问题。谢谢。

我认为您应该在bind_参数之后使用bind_result

退房


还有前面的堆栈溢出问题:

我尝试添加一行:mysqli\u stmt\u bind\u result($stmt,$type,$newId);但这只是导致了“mysqli_stmt_bind_result():绑定变量的数量与准备语句“Ahah!我会把第二个绑定放在执行之前。现在它起作用了。谢谢你的帮助,我很高兴!我正在编写代码,以便更容易理解,但被困在会议中。