PHP開(kāi)發(fā)基礎(chǔ)教程之批量並指定刪除用戶
封裝資料庫(kù)連線函數(shù)
#在真實(shí)的專案中,我們是將主機(jī)、使用者名、密碼、函式庫(kù)都寫(xiě)在設(shè)定檔當(dāng)中。
如果在程式碼中寫(xiě)死了,萬(wàn)一資料庫(kù)伺服器的相關(guān)資訊改變了,要把所有程式碼修改一次顯然不符合程式設(shè)計(jì)師的思考。
此外,在每一個(gè)需要連接資料庫(kù)的頁(yè)面中。我們都需要寫(xiě)上連結(jié)、判斷錯(cuò)誤、設(shè)定字元集、太過(guò)於麻煩。並且不利於重複使用這些程式碼。
我們可以用上之前講過(guò)的include系列函數(shù)來(lái)達(dá)成目標(biāo)。範(fàn)例圖如下:
因此,我們可以做一個(gè)設(shè)定檔config.php。將需要使用到的配置全部設(shè)定為常數(shù),程式碼如下:
<?php //數(shù)據(jù)庫(kù)服務(wù)器 define('DB_HOST', 'localhost'); //數(shù)據(jù)庫(kù)用戶名 define('DB_USER', 'root'); //數(shù)據(jù)庫(kù)密碼 define('DB_PWD', 'secret'); //庫(kù)名 define('DB_NAME', 'book'); //字符集 define('DB_CHARSET', 'utf8');
##我們將connection.php頁(yè)面抽出出來(lái),以後需要連接資料庫(kù)的時(shí)候只需要包含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);我們?cè)谝葬崦總€(gè)檔案使用中直接包含connection.php檔案就可以實(shí)現(xiàn)資料庫(kù)連線了:
include 'connection.php';把上面的準(zhǔn)備工作完成,接下來(lái)完成刪除數(shù)據(jù)
批次和指定刪除使用者
#在刪除前,需要判斷是刪除單行 資料還是刪除多行資料。
- 單行是透過(guò)get傳參的方式向delete.php檔案中寫(xiě)上對(duì)應(yīng)的ID。
- 而多個(gè)刪除是透過(guò)POST的方式向delete.php頁(yè)面?zhèn)鬟f對(duì)應(yīng)的ID。
- 如果這兩個(gè)都不符合的話,那我們可以視為資料不合法。
if (is_array($_POST['id'])) { $id = join(',', $_POST['id']); } elseif (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } else { echo '數(shù)據(jù)不合法'; exit; }
我們之前給大家在MySQL這一章時(shí)講解過(guò)刪除時(shí)可以使用到in的子語(yǔ)句。
同樣在這裡,我們就可以用in的子語(yǔ)句來(lái)達(dá)到效果。
join函數(shù)將多選刪除傳過(guò)來(lái)的id變成3,4,5的格式,最後多選刪除的SQL語(yǔ)句執(zhí)行出來(lái)的效果就是:
delete from user where id in(3,4,5,6,8);
而單選刪除的語(yǔ)句效果就是:
delete from user where id in(3)
這樣我們就實(shí)現(xiàn)了單選和多選自適應(yīng)效果。
$sql = "delete from user where id in($id)";
最終配對(duì)而成的整體程式碼示範(fàn)如下:
<?php include 'connection.php'; if (is_array($_POST['id'])) { $id = join(',', $_POST['id']); } elseif (is_numeric($_GET['id'])) { $id = (int) $_GET['id']; } else { echo '數(shù)據(jù)不合法'; exit; } $sql = "delete from user where id in($id)"; $result = mysqli_query($conn, $sql); if ($result) { echo '刪除成功'; } else { echo '刪除失敗'; }