如何使用mysqli获取存储过程的out参数

时间:2013-05-17 10:34:58

标签: php mysqli

我的存储过程有一个名为'@var'的out参数,它将是一个整数值。 我能够执行存储过程,但后来我无法获得out参数的值。

当我从mysql更改为mysqli时,这个问题已经出现了。

当我使用mysql连接时,代码工作正常,代码如下所示

    $query = "CALL myStoredProcedure('$LocationIdToEdit',@var)";           
    $result = mysql_query($query);
    $result = mysql_query("SELECT @var;");

    $row = mysql_fetch_row($result);
    $myVar = $row[0];

现在我将mysql更改为mysqli,如下所示

    $query = "CALL myStoredProcedure('$LocationIdToEdit',@var)";           
    $result = mysqli_query($conn, $query);
    $result2 = mysqli_query($conn,"SELECT @var;");

    $row = mysqli_fetch_row($result2);
    $myVar = $row[0];

现在$ row值为null,但是如果我在查询浏览器中执行相同的代码,它的工作正常但在php内部却没有......

    $result2 = mysqli_query($conn,"SELECT @var;");
    $row = mysqli_fetch_row($result2);

这是重新调整空值。

拜托,任何人都可以帮助我。

1 个答案:

答案 0 :(得分:0)

尝试:

$mysqli = new mysqli(  "HOST", "USR", "PWD", "DBNAME" );
$LocationIdToEdit= //your value here
$res = $mysqli->multi_query( "CALL myStoredProcedure($LocationIdToEdit,@var)" );
 do {
if ($result = $mysqli->store_result()) {
  printf( "<b>Result #%u</b>:<br/>", ++$results );
  while( $row = $result->fetch_row() ) {
    foreach( $row as $cell ) echo $cell, "&nbsp;";
  }
  $result->close();
  if( $mysqli->more_results() ) echo "<br/>";
}
} while( $mysqli->next_result() );