php - 将关联数组与 mysqli_fetch_assoc() php 结合
问题描述
我正在使用 PHP Excel 从存储在数据库中的数据创建一个 excel 文档。在 html 表格中显示数据时,它显示完美,但在 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数据共同创建一个如上所述的数组。这样我就可以在下面的代码中使用它来显示在特定的表格单元格中。
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');
推荐阅读
- model-view-controller - Yii2 - DynamicModel 中的属性
- caching - 如何清除互联网提供商的 DNS 缓存
- python-2.7 - 根据时区列转换 DataFrame 的日期时间行的更快方法
- azure - CosmosDB 大小太大
- php - 修改 WooCommerce 存档产品页面以显示每个产品的 SKU
- c# - 使用 Renci SshNet 运行命令时客户端崩溃
- interface - 为模块声明接口时 SystemVerilog 编译错误(未声明的标识符 [12.5(IEEE)])
- mongodb - Prisma-docker 无法连接到服务器
- flutter - 应用程序在真实的 iOS 设备上无法运行(黑屏),但在 iOS 模拟器中完美运行
- amazon-dynamodb - 是否可以在 DynamoDB 中设置基于标签的查询系统?