只有第一个MySQL调用才能在php页面中运行

时间:2013-07-07 21:23:55

标签: php apache mysqli

我有一个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上完美运作。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

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