php excel导入mysql数据库_通过Excel导入数据

简介

在处理大量数据时,我们经常需要将数据从一个系统导入到另一个系统,你可能需要将Excel文件中的数据导入到MySQL数据库中,PHP是一种广泛使用的服务器端脚本语言,可以用来处理这种类型的任务,本文将介绍如何使用PHP和MySQL将Excel文件导入到数据库中。

php excel导入mysql数据库_通过Excel导入数据
(图片来源网络,侵删)

准备工作

在开始之前,你需要确保你的系统中已经安装了以下软件:

PHP用于处理服务器端的逻辑。

MySQL用于存储数据。

Apache或Nginx用于运行PHP代码的Web服务器。

Excel文件包含你想要导入的数据。

安装PHPExcel库

PHPExcel是一个用于读取和写入Excel文件的PHP库,你可以使用Composer来安装它,在你的项目目录中打开命令行,然后输入以下命令:

composer require phpoffice/phpexcel

创建数据库和表

你需要创建一个数据库和一个表来存储你的数据,你可以使用MySQL的命令行工具或者任何你喜欢的MySQL客户端来完成这个任务,以下是一个简单的例子:

CREATE DATABASE mydatabase;
USE mydatabase;
CREATE TABLE mytable (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(100),
    age INT,
    PRIMARY KEY (id)
);

编写PHP代码

现在,我们可以开始编写PHP代码来读取Excel文件并将数据插入到数据库中,以下是一个简单的例子:

<?php
require 'vendor/autoload.php';
use PHPExcel_IOFactory;
use PHPExcel;
$inputFileName = 'mydata.xlsx'; // 你的Excel文件路径
try {
    $objPHPExcel = PHPExcel_IOFactory::load($inputFileName);
} catch(Exception $e) {
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e>getMessage());
}
$sheet = $objPHPExcel>getActiveSheet();
$highestRow = $sheet>getHighestRow();
$highestColumn = $sheet>getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
for ($row = 1; $row <= $highestRow; ++$row) {
    $rowData = array();
    for ($col = 0; $col < $highestColumnIndex; ++$col) {
        $value = $sheet>getCellByColumnAndRow($col, $row)>getValue();
        if (is_null($value)) {
            $value = '';
        } elseif (PHPExcel_Shared_Date::isDateTime($value)) {
            $value = date('Ymd H:i:s', PHPExcel_Shared_Date::ExcelToPHP($value));
        } elseif (PHPExcel_Shared_Date::isDate($value)) {
            $value = date('Ymd', PHPExcel_Shared_Date::ExcelToPHP($value));
        } elseif (preg_match('/^d{4}\d{2}\d{2}$/', $value)) { // 如果值是日期格式,转换为日期字符串
            $value = date('Ymd', strtotime($value));
        } elseif (preg_match('/^d{2}/d{2}/d{4}$/', $value)) { // 如果值是日期格式,转换为日期字符串
            $value = date('Ymd', strtotime($value));
        } elseif (preg_match('/^d{4}d{2}\d{2} d{2}:d{2}:d{2}$/', $value)) { // 如果值是日期时间格式,转换为日期时间字符串
            $value = date('Ymd H:i:s', strtotime($value));
        } elseif (preg_match('/^d+$/', $value)) { // 如果值是数字,直接使用
            $value = intval($value);
        } else { // 如果值是文本,直接使用,但需要转义特殊字符,以防止SQL注入攻击
            $value = addslashes($value);
        }
        array_push($rowData, $value);
    }
    try {
        $conn = new PDO('mysql:host=localhost;dbname=mydatabase', 'username', 'password'); // 你的数据库连接信息
        $conn>setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置错误模式为异常抛出模式
        $stmt = $conn>prepare("INSERT INTO mytable (name, age) VALUES (?, ?)"); // SQL语句,插入数据到mytable表的name和age字段中
        $stmt>execute(array($rowData[0], $rowData[1])); // 执行SQL语句,插入数据到数据库中
    } catch(PDOException $e) { // 如果发生错误,打印错误信息并继续下一行数据的插入操作,防止因为一条数据的插入失败而中断整个循环的操作
        echo 'Error: ' . $e>getMessage();
    } finally { // 无论是否发生错误,最后都需要关闭数据库连接,释放资源,防止内存泄漏和数据库连接过多的问题出现
        $conn = null;
    }
}
?>

运行代码并检查结果

现在,你可以运行你的PHP代码了,如果你的代码没有错误,你应该会看到你的Excel文件中的数据已经被成功导入到MySQL数据库中,你可以通过查询你的数据库来检查结果,你可以运行以下SQL语句来查看你的mytable表中的数据:SELECT * FROM mytable;,你应该能看到你在Excel文件中输入的所有数据。

归纳

通过上述步骤,你已经学会了如何使用PHP和MySQL将Excel文件导入到数据库中,这种方法可以处理大量的数据,并且可以轻松地扩展以处理更复杂的数据和更多的数据源,希望这篇文章对你有所帮助!

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/679993.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希
上一篇 2024-06-10 11:11
下一篇 2024-06-10 11:15

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入