Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php(mysqli)连续调用mysql过程不会产生结果_Php_Mysql_Stored Procedures_Mysqli - Fatal编程技术网

使用php(mysqli)连续调用mysql过程不会产生结果

使用php(mysqli)连续调用mysql过程不会产生结果,php,mysql,stored-procedures,mysqli,Php,Mysql,Stored Procedures,Mysqli,以下是我的存储过程: CREATE PROCEDURE productFromCatID( IN ID INT ) BEGIN SELECT * FROM product WHERE cat_id = ID; END; 这是我的php文件: try { $mysqli = new mysqli($db_host, $db_username, $db_password, $db_name); $con = new mysqli($db_host, $db_username,

以下是我的存储过程:

CREATE PROCEDURE productFromCatID(
  IN ID INT
)
BEGIN
  SELECT * FROM product
  WHERE cat_id = ID;
END;
这是我的php文件:

try {
  $mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);
  $con = new mysqli($db_host, $db_username, $db_password, $db_name);
} catch (PDOException $exception) {
  echo "Connection error: " . $exception->getMessage();
}

print '<h3>MYSQLI: simple select</h3>';
$rs = $mysqli->query( 'SELECT * FROM product WHERE cat_id =2;' );
while($row = $rs->fetch_object())
{
  print_r($row);
}

$q = 'CALL productFromCatID(1)';
$rs = $mysqli->query( $q );
print '<h3>MYSQLI: '.$q.'</h3>';
while($row = $rs->fetch_object())
{
  print_r($row);
}

$q = 'CALL productFromCatID(2)';
$rs = $mysqli->query( $q );
print '<h3>MYSQLI: '.$q.'</h3>';
while($row = $rs->fetch_object())
{
  print_r($row);
}
正如您在底部看到的,我在第39行得到了一个错误,在最后一次调用productFromCatID之后,它处于while循环的状态

while($row = $rs->fetch_object())
那么,我在调用程序时是否做错了什么,或者我是否错过了一个步骤

$q = 'CALL productFromCatID(1)';
$rs = $mysqli->query( $q );
print '<h3>MYSQLI: '.$q.'</h3>';
while($row = $rs->fetch_object())
{
  print_r($row);
}
然后可以执行下一个过程调用

while($row = $rs->fetch_object())
$q = 'CALL productFromCatID(1)';
$rs = $mysqli->query( $q );
print '<h3>MYSQLI: '.$q.'</h3>';
while($row = $rs->fetch_object())
{
  print_r($row);
}
while ($mysqli->next_result()) {
    $rs = $mysqli->use_result();
    if ($rs instanceof mysqli_result) {
        $rs->free();
    }
}