Php fetchall(PDO)Resultset迭代未返回$key=>;的值$价值
我正在尝试遍历结果集并获取列名和值,以便使用PHPExcel导出数据,但是Php fetchall(PDO)Resultset迭代未返回$key=>;的值$价值,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试遍历结果集并获取列名和值,以便使用PHPExcel导出数据,但是$qVistadet->fetchall在下面的代码中不起作用,并且会出现错误,如未定义的偏移量 但是,$qVistadet->fetch,可以工作,但由于它只返回结果集中的第一行,因此没有用处 有人能在这个问题上帮忙吗 $qVistadet = $db->prepare("CALL spvistadetailsbystaffid(?)"); $qdetails->bindParam (1, $
$qVistadet->fetchall
在下面的代码中不起作用,并且会出现错误,如未定义的偏移量
但是,$qVistadet->fetch
,可以工作,但由于它只返回结果集中的第一行,因此没有用处
有人能在这个问题上帮忙吗
$qVistadet = $db->prepare("CALL spvistadetailsbystaffid(?)");
$qdetails->bindParam (1, $staffid);
$qdetails->execute();
$col=0;
$row1=1;
while($row = $qVistadet->fetchAll(PDO::FETCH_ASSOC))
{
foreach ($row as $key=>$value)
{
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $key);
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row1 + 1, $value);
$col++;
}
$row1++;
}
下面的更改修复了该问题。谢谢
$qVistadet = $db->prepare( "CALL spvistadetailsbystaffid(?)" );
$qVistadet->bindParam ( 1, $staffid );
$qVistadet->execute();
$col=0;
$row1=2;
while ($arrValues = $qVistadet->fetch(PDO::FETCH_ASSOC))
{
foreach ($arrValues as $key=>$value){
$sheet->setCellValueByColumnAndRow($col, 1, $key);
$sheet->setCellValueByColumnAndRow($col, $row1, $value);
$col++;
}
$row1++;
$col=0;
}
如果要获取全部,为什么需要“while”循环?我很困惑。
PDO::fetchAll
将整个结果集提取到数组的数字数组中。如果将fetchAll
替换为simplefetch
而不做任何更改,则代码应该可以工作。但是fetch只返回一行。@DarwinvonCorax关于fetch
的说法是正确的,它将真正从查询中获取所有数据。也许在你的foreach{…}
循环中有什么东西导致了这个问题?