PHP 上传sql文件后,清空mysql数据库,然后导入sql文件
时间:2023年10月04日
/来源:网络
/编辑:佚名
很实用的操作!
PHP代码:
<?php
// 连接到 MySQL 数据库
$host = "localhost"; // MySQL 服务器地址
$username = "your_username"; // MySQL 用户名
$password = "your_password"; // MySQL 密码
$dbname = "your_database"; // MySQL 数据库名
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 上传文件
if (isset($_FILES["file"]) && $_FILES["file"]["error"] == 0) {
$target_dir = "/path/to/upload/directory/"; // 修改为你的上传目录
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$fileType = pathinfo($target_file, PATHINFO_EXTENSION);
$allowedTypes = array('sql'); // 仅允许上传 SQL 文件
if (in_array($fileType, $allowedTypes)) {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
// 清空数据库
$tables = $conn->query("SHOW TABLES")->fetch_all();
foreach ($tables as $table) {
$conn->query("DROP TABLE IF EXISTS {$table[0]}");
}
// 导入 SQL 文件
$sql = file_get_contents($target_file);
if ($conn->multi_query($sql)) {
echo "SQL 文件成功导入到数据库。";
} else {
echo "导入 SQL 文件时发生错误:" . $conn->error;
}
} else {
echo "上传文件失败。";
}
} else {
echo "只允许上传 SQL 文件。";
}
} else {
echo "请选择要上传的文件。";
}
// 关闭数据库连接
$conn->close();
?>
请将 $host,$username,$password,$dbname,$target_dir 替换为你的实际信息。上传的 SQL 文件必须存储在 $target_dir 目录中,且只允许上传 SQL 文件。如果上传和导入过程中没有错误,则会清空数据库并导入 SQL 文件。
注意:在实际生产环境中,为了安全起见,应该对上传的文件进行更多的验证和过滤,例如:限制上传的文件类型、大小,防止文件上传漏洞等。
HTML表单:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Upload SQL File</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-g5AX/vyqo5KOGxz5AAn/AY1dRItbsdw7tHtzNjh9avsgzP0nckdKP/Jc1wJfONjK" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>Upload SQL File</h1>
<form action="upload_sql.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="sqlFile">Select SQL File</label>
<input type="file" class="form-control-file" id="sqlFile" name="sqlFile">
</div>
<button type="submit" class="btn btn-primary">Upload</button>
</form>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@2.9.3/dist/umd/popper.min.js" integrity="sha384-lb6U1+A6OHXWnogQIgUpkzwFJa5yk5PbRyfPYpV1FaaLnNm/KTMc2QH8Heq7ZjKd" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js" integrity="sha384-LpW1aXBBv/smfihSkStFCTyJf35QLlAdAGl7Yh2i2IDJnVWj9X3v7FJITgG14x7V" crossorigin="anonymous"></script>
</body>
</html>
请注意,此表单仅包含一个文件输入框和一个提交按钮,可以上传 SQL 文件并将其提交到名为 upload_sql.php 的处理脚本。 你需要根据实际需要修改表单元素的名称和提交操作的目标。
两者结合后,举个栗子
PHP代码:
<?php
// 连接到 MySQL 数据库
$host = "localhost"; // MySQL 服务器地址
$username = "your_username"; // MySQL 用户名
$password = "your_password"; // MySQL 密码
$dbname = "your_database"; // MySQL 数据库名
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 上传文件
if (isset($_FILES["file"]) && $_FILES["file"]["error"] == 0) {
$target_dir = "/path/to/upload/directory/"; // 修改为你的上传目录
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$fileType = pathinfo($target_file, PATHINFO_EXTENSION);
$allowedTypes = array('sql'); // 仅允许上传 SQL 文件
if (in_array($fileType, $allowedTypes)) {
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
// 清空数据库
$tables = $conn->query("SHOW TABLES")->fetch_all();
foreach ($tables as $table) {
$conn->query("DROP TABLE IF EXISTS {$table[0]}");
}
// 导入 SQL 文件
$sql = file_get_contents($target_file);
if ($conn->multi_query($sql)) {
echo "SQL 文件成功导入到数据库。";
} else {
echo "导入 SQL 文件时发生错误:" . $conn->error;
}
} else {
echo "上传文件失败。";
}
} else {
echo "只允许上传 SQL 文件。";
}
} else {
echo "请选择要上传的文件。";
}
// 关闭数据库连接
$conn->close();
?>
请将 $host,$username,$password,$dbname,$target_dir 替换为你的实际信息。上传的 SQL 文件必须存储在 $target_dir 目录中,且只允许上传 SQL 文件。如果上传和导入过程中没有错误,则会清空数据库并导入 SQL 文件。
注意:在实际生产环境中,为了安全起见,应该对上传的文件进行更多的验证和过滤,例如:限制上传的文件类型、大小,防止文件上传漏洞等。
HTML表单:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Upload SQL File</title>
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-g5AX/vyqo5KOGxz5AAn/AY1dRItbsdw7tHtzNjh9avsgzP0nckdKP/Jc1wJfONjK" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>Upload SQL File</h1>
<form action="upload_sql.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="sqlFile">Select SQL File</label>
<input type="file" class="form-control-file" id="sqlFile" name="sqlFile">
</div>
<button type="submit" class="btn btn-primary">Upload</button>
</form>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.6.0.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@2.9.3/dist/umd/popper.min.js" integrity="sha384-lb6U1+A6OHXWnogQIgUpkzwFJa5yk5PbRyfPYpV1FaaLnNm/KTMc2QH8Heq7ZjKd" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js" integrity="sha384-LpW1aXBBv/smfihSkStFCTyJf35QLlAdAGl7Yh2i2IDJnVWj9X3v7FJITgG14x7V" crossorigin="anonymous"></script>
</body>
</html>
请注意,此表单仅包含一个文件输入框和一个提交按钮,可以上传 SQL 文件并将其提交到名为 upload_sql.php 的处理脚本。 你需要根据实际需要修改表单元素的名称和提交操作的目标。
两者结合后,举个栗子
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03