详情页

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 的处理脚本。 你需要根据实际需要修改表单元素的名称和提交操作的目标。
两者结合后,举个栗子
相关文章
猜你需要