0

我有一个 PHP 脚本,我需要在其中调用 3 个 mysql 存储过程。但由于某种原因,只有我首先调用的那个才会显示出来。这是代码:

$raceid = $_GET['raceId'];
$race = "CALL GetRace($raceid)";
if ($stmt = $con->prepare($race))
{
    $stmt->execute();
    $stmt->bind_result($results);
    while ($stmt->fetch())
    {
        echo $results;
    }
    $stmt->close();
}
$fastround = "CALL GetFastestRound($raceid)";
if ($stmt = $con->prepare($fastround))
{
    $stmt->execute();
    $stmt->bind_result($results);
    while ($stmt->fetch())
    {   
        echo $results;
    }
    $stmt->close();
}    
$uitslag = "CALL GetUitslagByRaceID($raceid)";
if ($stmt = $con->prepare($uitslag)) 
{
    $stmt->execute();
    $stmt->bind_result($results);
    while ($stmt->fetch()) 
    {
        echo $results
    }
    $stmt->close();
}

在这种情况下,只显示 $race 结果。但是,如果我将例如 $fastround 代码放在 $race 代码上方(或简单地删除 $race 代码),则会显示 $fastround 结果。

我已经使用 WAMP 在我的 Windows 机器上编写了代码,并希望将其移至 Linux 环境以用于生产环境。另一个奇怪的事情是它在 WAMP 上完美运行。

我在这里做错了什么?

4

1 回答 1

0

存储过程可能返回多个结果集,因此您必须在发出下一个语句mysql_store_result()调用之前遍历所有结果集。

于 2013-07-07T21:37:53.183 回答