2014-09-03 54 views
1

這裏是我的存儲過程:存儲過程編寫的語句錯誤MySQL的PHP​​

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

我想你應該在bind_param之後使用bind_result。

退房http://php.net/manual/en/mysqli-stmt.bind-result.php

和以前的堆棧溢出問題:mysqli bind_param() fatal error

+0

我嘗試添加一行:mysqli_stmt_bind_result($語句,$型,$ NEWID);但這只是導致「mysqli_stmt_bind_result():綁定變量的數量不匹配準備語句中的字段數」 – SteveC 2014-09-03 20:04:18

+0

啊哈!我會在執行之前放置第二個綁定。現在它可以工作。謝謝你的幫助。 – SteveC 2014-09-03 20:20:22

+0

我很高興!我正在編寫代碼,以使其更容易理解,但被困在會議中。 – michaelp 2014-09-04 15:36:29