2017-07-03 142 views
0

我想通过PHP调用一个Stored Proc。但我没有得到期望的输出。我在PHP中遇到了不正确的语法错误。如果我独立运行Stored Proc,它按预期工作。下面我给这个代码片段 -从PHP返回的MySqli存储过程

<?php 

$host = "localhost"; 
$db_user = "userid"; 
$db_password = "password"; 
$db_name = "trialdb"; 

$con = mysqli_connect($host,$db_user,$db_password,$db_name); 

$name = $_POST["Name"]; 
$id = $_POST["Id"]; 

$storedProc = "CALL CheckNameId(?,?, @returnStatus)"; 

$stmt = mysqli_prepare($con, $storedProc); 
mysqli_stmt_bind_param($stmt,"si",$name, $id); 
mysqli_stmt_execute($stmt); 
mysqli_stmt_bind_result($stmt, $returnStatus); 

mysqli_stmt_fetch($stmt); 
echo $returnStatus; 

mysqli_stmt_close($stmt); 
mysqli_close($con); 

?> 

我正在逐渐mysqli_stmt_bind_param,mysqli_stmt_execute,mysqli_stmt_bind_result错误...其第一个参数为布尔过去了。它将$ stmt解释为布尔值。 我能否请知道,我的理解有什么问题? 我怀疑我使用绑定结果的方式有些不正确。 可能是我与存储过程中的'语句','结果集'或处理'结果集'存在理解上的差距。 如果有任何好的链接,任何人都可以提出,我很乐意提及。

回答

0

存储过程OUT参数只设置会话变量的值,但不会返回结果。

你将不得不随后自己查询会话变量:

$storedProc = "CALL CheckNameId(?,?, @returnStatus)"; 
$stmt = mysqli_prepare($con, $storedProc); 
mysqli_stmt_bind_param($stmt,"si",$name, $id); 
mysqli_stmt_execute($stmt); 
mysqli_stmt_close($stmt); 

$sql = "SELECT @returnStatus"; 
$result = mysqli_query($con, $sql); 
$row = mysqli_fetch_row($result); 
echo $row[0]; 
+0

你的建议帮助。我将尝试更多地了解MySql Stored Procs在PHP中处理的方式。 –