PHP開發基礎教程之批量並指定刪除用戶

封裝資料庫連線函數

#在真實的專案中,我們是將主機、使用者名、密碼、函式庫都寫在設定檔當中。
如果在程式碼中寫死了,萬一資料庫伺服器的相關資訊改變了,要把所有程式碼修改一次顯然不符合程式設計師的思考。

此外,在每一個需要連接資料庫的頁面中。我們都需要寫上連結、判斷錯誤、設定字元集、太過於麻煩。並且不利於重複使用這些程式碼。

我們可以用上之前講過的include系列函數來達成目標。範例圖如下:

118.png

因此,我們可以做一個設定檔config.php。將需要使用到的配置全部設定為常數,程式碼如下:

<?php
//数据库服务器
define('DB_HOST', 'localhost');

//数据库用户名
define('DB_USER', 'root');

//数据库密码
define('DB_PWD', 'secret');

//库名
define('DB_NAME', 'book');

//字符集
define('DB_CHARSET', 'utf8');

##我們將connection.php頁面抽出出來,以後需要連接資料庫的時候只需要包含connection.php檔案即可。程式碼如下:

<?php

include 'config.php';

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PWD, DB_NAME);

if (mysqli_errno($conn)) {
    mysqli_error($conn);
    exit;
}

mysqli_set_charset($conn, DB_CHARSET);

我們在以後每個檔案使用中直接包含connection.php檔案就可以實現資料庫連線了:

include 'connection.php';

把上面的準備工作完成,接下來完成刪除數據


批次和指定刪除使用者

#在刪除前,需要判斷是刪除單行 資料還是刪除多行資料。

  • 單行是透過get傳參的方式向delete.php檔案中寫上對應的ID。

  • 而多個刪除是透過POST的方式向delete.php頁面傳遞對應的ID。

  • 如果這兩個都不符合的話,那我們可以視為資料不合法。

  • if (is_array($_POST['id'])) {
    
        $id = join(',', $_POST['id']);
    
    } elseif (is_numeric($_GET['id'])) {
    
        $id = (int) $_GET['id'];
    
    } else {
        echo '数据不合法';
        exit;
    }



################ ##組合SQL語句############

我們之前給大家在MySQL這一章時講解過刪除時可以使用到in的子語句。

同樣在這裡,我們就可以用in的子語句來達到效果。

join函數將多選刪除傳過來的id變成3,4,5的格式,最後多選刪除的SQL語句執行出來的效果就是:

delete from user where id in(3,4,5,6,8);

而單選刪除的語句效果就是:

delete from user where id in(3)

這樣我們就實現了單選和多選自適應效果。

$sql = "delete from user where id in($id)";

最終配對而成的整體程式碼示範如下:

<?php

include 'connection.php';

if (is_array($_POST['id'])) {

    $id = join(',', $_POST['id']);

} elseif (is_numeric($_GET['id'])) {

    $id = (int) $_GET['id'];

} else {
    echo '数据不合法';
    exit;
}

$sql = "delete from user where id in($id)";

$result = mysqli_query($conn, $sql);

if ($result) {
    echo '删除成功';
} else {
    echo '删除失败';
}


#
繼續學習
||
<?php include 'connection.php'; if (is_array($_POST['id'])) { $id = join(',', $_POST['id']); } elseif (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } else { echo '数据不合法'; exit; } $sql = "delete from user where id in($id)"; $result = mysqli_query($conn, $sql); if ($result) { echo '删除成功'; } else { echo '删除失败'; }