Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.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 fetchall(PDO)Resultset迭代未返回$key=>;的值$价值_Php_Mysql_Pdo - Fatal编程技术网

Php fetchall(PDO)Resultset迭代未返回$key=>;的值$价值

Php fetchall(PDO)Resultset迭代未返回$key=>;的值$价值,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试遍历结果集并获取列名和值,以便使用PHPExcel导出数据,但是$qVistadet->fetchall在下面的代码中不起作用,并且会出现错误,如未定义的偏移量 但是,$qVistadet->fetch,可以工作,但由于它只返回结果集中的第一行,因此没有用处 有人能在这个问题上帮忙吗 $qVistadet = $db->prepare("CALL spvistadetailsbystaffid(?)"); $qdetails->bindParam (1, $

我正在尝试遍历结果集并获取列名和值,以便使用PHPExcel导出数据,但是
$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
替换为simple
fetch
而不做任何更改,则代码应该可以工作。但是fetch只返回一行。@DarwinvonCorax关于
fetch
的说法是正确的,它将真正从查询中获取所有数据。也许在你的
foreach{…}
循环中有什么东西导致了这个问题?