
如果您需要将数据批量导入到数据库中,PHP 提供了多种方式实现增删改查操作中的“增”这一环节。以下是几种常见的 PHP 数据导入方法:
一、使用 PDO 批量插入数据
PDO 提供了预处理语句和事务支持,适合安全、高效地导入多条记录。通过绑定参数可防止 SQL 注入,并利用事务提升批量写入性能。
1、建立 PDO 连接并设置错误模式为异常模式。
2、开启事务,使用 beginTransaction() 方法。
立即学习“PHP免费学习笔记(深入)”;
3、准备一条 INSERT 语句,使用 prepare() 方法创建预处理对象。
4、循环调用 execute() 方法传入每组数据数组。
5、全部执行成功后调用 commit() 提交事务;若出错则调用 rollback() 回滚。
二、使用 MySQLi 多查询导入 CSV 数据
MySQLi 支持 LOAD DATA INFILE 语句,可直接从服务器本地文件快速导入结构化数据,适用于大体积 CSV 文件。
1、确保 PHP 进程有读取目标 CSV 文件的权限,并确认 MySQL 配置中 local_infile 已启用。
2、使用 mysqli::options(MYSQLI_OPT_LOCAL_INFILE, true) 启用客户端本地文件加载功能。
3、构造 SQL 命令: LOAD DATA LOCAL INFILE 'path/to/file.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS。
4、调用 query() 方法执行该命令。
三、通过 file() 和 foreach 解析 CSV 后逐行插入
当无法使用 LOAD DATA INFILE(如共享主机限制)时,可借助 PHP 原生函数读取 CSV 文件内容,再逐行解析并拼接 SQL 插入语句。
1、使用 file() 函数读取 CSV 文件,返回每行为元素的数组。
2、跳过首行(表头),对后续每一行调用 str_getcsv() 解析字段值。
3、对每个字段值进行 mysqli_real_escape_string() 或参数绑定处理以防止注入。
4、构建单条 INSERT 语句并执行,或累积一定数量后使用 VALUES 批量插入语法减少查询次数。
四、使用 Laravel Eloquent 的 chunk 和 insert 方法
在 Laravel 框架下,Eloquent ORM 提供了更高级的数据操作抽象,insert() 支持批量二维数组写入,chunk() 可分批次处理大数据集避免内存溢出。
1、将 CSV 数据解析为二维关联数组,确保键名与数据库字段一致。
2、调用模型的 insert() 方法传入该数组,一次写入多条记录。
3、若数据量极大,先用 array_chunk() 将数组切分为每批 1000 条,再循环调用 insert()。
4、必要时在插入前调用 DB::transaction() 包裹整个流程以保证原子性。
五、使用 phpMyAdmin 图形界面导入
对于非编程场景或临时调试需求,phpMyAdmin 提供了 Web 界面化的数据导入功能,支持 CSV、SQL、JSON 等格式,无需编写 PHP 代码即可完成基础导入任务。
1、登录 phpMyAdmin,选择目标数据库及数据表。
2、点击顶部菜单栏的 导入 选项卡。
3、点击 选择文件 按钮上传本地 CSV 或 SQL 文件。
4、在格式选项中指定字段分隔符(如逗号)、行尾标识(如 CRLF)、是否忽略首行等参数。
5、点击 执行 按钮开始导入,页面将显示成功插入的行数及可能的警告信息。











