跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

PHP编程数据导入导出怎么学_PHP数据编程学习【详解】

PHP数据导入导出需解决「文件怎么读」「数据怎么进库」「浏览器怎么触发下载」三大问题,重点攻克CSV中文乱码、Excel内存溢出、大文件上传截断等断点。 直接上手比看教程快得多:PHP数据导入导出不是“学概念”,而是解决「文件怎么读」「数据怎么进库」「浏览器怎么触发下载」这三个具体问题。核心不在于库多强大,而在于你能否绕过常见断点——比如 CSV 中文乱码、Excel 内存爆掉、大文件上传被截断。 CSV 导入时 fgetcsv() 读不出中文或字段错位
fgetcsv()
默认按 ASCII 处理,遇到 UTF-8 编码的中文 CSV(尤其是 Windows Excel 保存的)会把一个汉字拆成多个字节,导致
fgetcsv()
在逗号前意外截断。 确保上传的 CSV 文件本身是 UTF-8 无 BOM 格式(用 VS Code 或 Notepad++ 检查并转存) 不要直接用
fopen($file, 'r')
,改用
mb_convert_encoding(file_get_contents($file), 'UTF-8', 'GBK')
预处理,再用
str_getcsv()
解析每行 或者更稳妥:用
stream_filter_append($handle, 'convert.iconv.GBK/UTF-8')
给流加转换滤镜,避免一次性读全文件吃内存 导出 CSV 时浏览器下载失败或文件名乱码
header('Content-Disposition: attachment; filename="data.csv"')
在中文环境下极易出问题:IE 和旧版 Edge 会把 UTF-8 文件名解析成乱码,Chrome 虽支持但需额外编码。 文件名必须用
rawurlencode()
编码,且加上
filename=UTF-8''
标准格式:
header('Content-Disposition: attachment; filename="data.csv"; filename=UTF-8\'\'' . rawurlencode('用户数据.csv') . '"');
Content-Type
推荐用
text/csv; charset=utf-8
,并在写入前输出 UTF-8 BOM(
fprintf($fh, "\xEF\xBB\xBF")
),防止 Excel 打开显示乱码 别在导出逻辑前有任何
echo
、
var_dump
或空格输出,否则 header 失效 用 PhpSpreadsheet 导入大 Excel 时内存溢出或超时
PhpSpreadsheet
默认加载整张表到内存,10 万行 Excel 很容易突破 512MB 限制,且
getHighestRow()
在合并单元格多的表里极慢。 改用「只读模式」+「逐行迭代」:
$reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $reader->setLoadSheetsOnly(['Sheet1']); $spreadsheet = $reader->load($file); $worksheet = $spreadsheet->getActiveSheet(); foreach ($worksheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); // 处理本行 }
配合 PHP 配置调整:
ini_set('memory_limit', '1G')
和
set_time_limit(300)
放在脚本开头(仅限 CLI 或可信后台) 更重的数据量(youjiankuohao php cn50 万行)建议退回到 CSV +
fgetcsv()
,别硬扛 Excel PDO 批量插入时性能卡在 100 条/秒以下 逐条
INSERT
是最大瓶颈,尤其没开事务时,每条都触发一次磁盘刷写。 必须包在事务里:
$pdo->beginTransaction()
→ 批量执行 →
$pdo->commit()
用单条
INSERT INTO t (a,b) VALUES (?,?),(?,?),(?,?)
拼 100–500 行一组,比 100 次预处理快 5–10 倍 若字段含特殊字符(如换行、引号),别手动拼 SQL —— 用
array_map([$pdo, 'quote'], $values)
安全转义后拼接 真正卡住人的从来不是“不会写”,而是上传临时文件路径失效、BOM 导致 JSON 解析失败、PDO 预处理绑定类型错位这些细节。动手时先拿 3 行真实数据跑通全流程,再扩规模。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载

相关文章