将关联数组与 mysqli_fetch_assoc() php 组合

Combining an associative array with mysqli_fetch_assoc() php

我正在使用 PHP Excel 从数据库中存储的数据创建一个 excel 文档。当涉及到在 html table 中显示数据时,它显示得很好,但是当涉及到 excel 文件时,我遇到了障碍。我的代码如下:

$excelData = array(
        0 => array('Jackson','Barbara','27','F','Florida'),
        1 => array('Kimball','Andrew','25','M','Texas'),
        2 => array('Baker','John','28','M','Arkansas'),
        3 => array('Gamble','Edward','29','M','Virginia'),
        4 => array('Anderson','Kimberly','23','F','Tennessee'),
        5 => array('Houston','Franchine','25','F','Idaho'),
        6 => array('Franklin','Howard','24','M','California'),
        7 => array('Chen','Dan','26','M','Washington'),
        8 => array('Daniel','Carolyn','27','F','North Carolina'),
        9 => array('Englert','Grant','25','M','Delaware')
    );

我需要 mysql 数据共同创建一个数组,如上所示。这样我就可以在下面的代码中使用它来显示特定的 table 单元格。

for($i=0; $i<count($excelData); $i++){
        $ii = $i+3;
        $objPHPExcel->getActiveSheet()->setCellValue('A'.$ii, $excelData[$i][0]);
        $objPHPExcel->getActiveSheet()->setCellValue('B'.$ii, $excelData[$i][1]);
        $objPHPExcel->getActiveSheet()->setCellValue('C'.$ii, $excelData[$i][2]);
        $objPHPExcel->getActiveSheet()->setCellValue('D'.$ii, $excelData[$i][3]);
        $objPHPExcel->getActiveSheet()->setCellValue('E'.$ii, $excelData[$i][4]);
}

包括我的 mysqli 查询在内的完整循环代码如下:

$qr = "SELECT * FROM ". DB_PROJECT_DETAILS_TBL ." WHERE project_id = '$project_id' ORDER BY id DESC";
    $mx = $db->runQuery($qr);

    // check for empty result
    while ($row = mysqli_fetch_array($mx)) {
    $excelData = array(
        0 => array($row['col1'], $row['col2'], $row['col3'], $row['col4'], $row['col5'])
    );
}

如有任何帮助,我们将不胜感激。

如果我没理解错,你需要替换这段代码

while ($row = mysqli_fetch_array($mx)) {
    $excelData = array(
        0 => array($row['col1'], $row['col2'], $row['col3'], $row['col4'], $row['col5'])
    );
}

使用此代码

$excelData = array();
while ($row = mysqli_fetch_array($mx)) {
    $excelData[] = array($row['col1'], $row['col2'], $row['col3'], $row['col4'], $row['col5']);
}

我也认为您可以使用此代码段。我认为它会稍微降低复杂性

$qr = <<<SQL
    SELECT
    LIST ONLY NECESSARY COLUMNS
    FROM ". DB_PROJECT_DETAILS_TBL ." 
    WHERE project_id = '$project_id' 
    ORDER BY id DESC
SQL;
$mx = $db->runQuery($qr);
$excelData = mysqli_fetch_all($mx, MYSQLI_NUM);
$objPHPExcel->getActiveSheet()->fromArray($excelData, null,'A3');