作为一个菜鸟,我发现这很难解释,但基本上我执行PDO查询并通过fetchAll获取结果(我使用的是Fetch,但有一个关于打开游标的建议,所以我改为fetchAll尝试防止这种情况)在该foreach中,我使用第一个查询中的一些数据执行另一个查询。
$ query5有两个结果,第一次迭代正常,但第二次迭代丢失了指针并返回Null。
我在这里尝试过很多东西,这让我很生气。这是我在Stackoverflow上的第一篇文章,但我已经使用了它很多,它几乎总能给我我想要的答案 - 希望是希望。
代码提取
//initialise array
$parvalues = array();
//Start by getting the rounds played by player
$query5 = "select * from IN_holeresults
where ho_playerkey = :namekey ";
$stmt5 = $pdoconn->prepare($query5);
$stmt5->bindValue(':namekey', $namekey) ;
$stmt5->execute();
$results5 = $stmt5->fetchAll(PDO::FETCH_ASSOC);
foreach($results5 as $row5)
{
//fetch the course info i.e. the Par value
$query6 = "
select * from IN_events, IN_venues
where ev_venuekey = ve_key
and ev_number = :evnumber
and ev_year = :evyear
";
$stmt6 = $pdoconn->prepare($query6);
$stmt6->bindValue(':evnumber', $row5['ho_eventkey']) ;
$stmt6->bindValue(':evyear', $row5['ho_year']) ;
$stmt6->execute();
$row6 = $stmt6->fetch();
//loop round holes and get par values and store in array
for ($j=1; $j<=18; $j++)
{
$parvalues[$j] = $row6['ve_parh'.$j];
}
var_dump($parvalues);
}
Screen shop of Var_dump showing values in iteration 1 but nulls in int#2
其他信息: 我在代码中有以下内容。
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(E_ALL);
加
$pdoconn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
我也知道第一次迭代有效(因此SQL至少在第一次传递时起作用),因为屏幕图像显示数组中有值。在第二次迭代中,Xdebug将row6显示为false。
感谢接受进一步调试的任何帮助。
Tony