红穆笔记
首頁 語言筆記 PHP 上傳sql文件後,清空mysql數據庫,然後導入sql文件
語言筆記 PHP PHP與mysql

PHP 上傳sql文件後,清空mysql數據庫,然後導入sql文件

PHP 上传sql文件后,清空mysql数据库,然后导入sql文件

很實用的操作!

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
if($_FILES['sqlFile']){
// 連接到 MySQL 數據庫
$host = "localhost";        // MySQL 服務器地址
$username = "test_4s5_cn"; // MySQL 用戶名
$password = "wnxxtJTa3y4SPPrr"; // MySQL 密碼
$dbname = "test_4s5_cn";   // MySQL 數據庫名
$conn = new mysqli($host, $username, $password, $dbname);
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}

// 上傳文件
if (isset($_FILES["sqlFile"]) && $_FILES["sqlFile"]["error"] == 0) {
    $target_dir = __DIR__."/path/"; // 修改爲你的上傳目錄
    // 創建指定目錄
    if (!mkdir($target_dir, 0777, true)) {
        throw new Exception('Failed to create directory.');
    }
    $target_file = $target_dir . basename($_FILES["sqlFile"]["name"]);
    $fileType = pathinfo($target_file, PATHINFO_EXTENSION);
    $allowedTypes = array('sql'); // 僅允許上傳 SQL 文件
    if (in_array($fileType, $allowedTypes)) {
        if (move_uploaded_file($_FILES["sqlFile"]["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 "請選擇要上傳的文件。";
}
if (is_dir($target_dir)) { // 如果目錄存在
    $files = glob($target_dir . '/*'); // 獲取目錄下的所有文件和子目錄
    foreach ($files as $file) {
        if (is_file($file)) { // 如果是文件則直接刪除
            unlink($file);
        } else { // 如果是子目錄則遞歸調用自身
            deleteDir($file);
        }
    }
    rmdir($target_dir); // 刪除目錄
}

// 關閉數據庫連接
$conn->close();
}
?>
<!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="<?=$SERVER['SCRIPT_NAME']?>" 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>

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232
php 特殊字符转义与还原

php 特殊字符轉義與還原 語言筆記 PHP PHP採集 PHP與mysql

轉義字符是一種特殊的字符常量。轉義字符以反斜線"&quot;開頭,後跟一個或幾個字符。轉義字符具有特定的含義,不同於字符原有的意義,故稱“轉義”字符。轉義字符的用處1:將普通字符轉爲特殊用途,如後退鍵,回車鍵等。2:用來將特殊意義的字符轉換回它原來的意義。3:在數據寫入數據庫前,都會使用轉義字符(函…
👁 181
PHP mysqli

PHP mysqli 語言筆記 PHP PHP採集 PHP與mysql

執行鍼對數據庫的查詢:刪除數據庫&lt;?php // 假定數據庫用戶名:root,密碼:123456,數據庫:RUNOOB $con=mysqli_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;123456&quot;,&quot;RUN…
👁 232
PHP中mysqli

PHP中mysqli 語言筆記 PHP PHP採集 PHP與mysql

mysqli_num_rows()這個函數只用於SELECT查詢方法而mysqli_affected_rows()函數是記錄上一個sql語句對整個數據庫的影響從而把受影響的數據個數返回,這個主要用於INSERT(插入)、UPDATE(替換)、DELETE(刪除)。
👁 146

推薦閱讀

(自适应手机版)响应式精密机械模具类pbootcms网站模板 精密仪器模具加工设备网站源码下载 0161

(自適應手機版)響應式精密機械模具類pbootcms網站模板 精密儀器模具加工設備網站源碼下載 0161 實用收藏 pbootcms模板

這套自適應手機版的響應式精密機械模具類PbootCMS網站模板。設計風格精密專業,能夠展示精密模具、加工設備及技術工藝。有助於模具製造企業在線上展示高精度製造能力,獲取汽車、電子等行業客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s…
👁 60
响应式儿童益智玩具网站模板 0992

響應式兒童益智玩具網站模板 0992 實用收藏 易優模板

一款針對兒童益智玩具行業的eyoucms響應式網站模板。設計風格活潑童趣,能夠展示益智玩具產品、教育理念、品牌故事及安全標準。有助於玩具品牌在線上展示產品,吸引家長與兒童。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優C…
👁 35
(自适应手机版)旅游攻略网站模板 文章博客网站源码- 带评论功能 1142

(自適應手機版)旅遊攻略網站模板 文章博客網站源碼- 帶評論功能 1142 實用收藏 pbootcms模板

一款旅遊攻略與文章博客PbootCMS網站模板,支持PC與WAP端,帶評論功能。設計風格清新旅行,適合旅遊愛好者分享遊記、攻略及攝影作品。評論功能有助於增強用戶互動,建立社區氛圍。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼:www.4s5.cn相…
👁 65
(自适应手机版)响应式红色机械五金网站pbootcms模板 重工业钢铁机械类企业网站模板源码下载 0162

(自適應手機版)響應式紅色機械五金網站pbootcms模板 重工業鋼鐵機械類企業網站模板源碼下載 0162 實用收藏 pbootcms模板

一款自適應手機版的響應式紅色機械五金PbootCMS網站模板,適用於重工業與鋼鐵機械行業。設計風格熱情穩重,能夠展示大型機械、鋼鐵製品及工業場景。有助於重工企業在線上樹立強大的品牌形象,吸引工業領域客戶。模板展示 安裝說明 網站後臺:/admin.php 賬號:admin 密碼:admin 解壓密碼…
👁 27
响应式国际货运物流行业网站模板 0993

響應式國際貨運物流行業網站模板 0993 實用收藏 易優模板

此套eyoucms響應式模板適用於國際貨運物流行業,設計風格高效現代,能夠展示物流服務網絡、貨運解決方案及企業實力。有助於國際物流公司在線上吸引跨境貿易客戶。模板展示 安裝說明 網站後臺:/login.php 賬號:admin 密碼:admin 相關文章易優CMS安裝常見問題總結易優CMS(Eyou…
👁 57