天天看點

php操作資料庫之删除修改,亂碼處理目錄一: 資料庫操作之删除二: 組合SQL語句三: 删除代碼示範四: 修改使用者資訊五: 修改代碼示範六: php資料庫操作之資料顯示亂碼解決辦法

目錄

一: 資料庫操作之删除

二: 組合SQL語句

三: 删除代碼示範

四: 修改使用者資訊

五: 修改代碼示範

六: php資料庫操作之資料顯示亂碼解決辦法

一: 資料庫操作之删除

1.在删除前,有單行删除資料和删除多行資料;判斷是單選還是多選删除;

2.單行是通過get傳參的方式向delete.php檔案中寫上對應的ID;

3.而多個删除是通過POST的方式向delete.php頁面中傳遞對應的ID;

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

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

二: 組合SQL語句

1.join函數将多選删除傳過來的id變為了3,4,5的格式,最終多選删除的SQL語句執行出來的效果就是:

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

2.而單選删除的語句效果就是:

delete from user where id in(3)
           

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 '删除失敗';
}
?>
           

四: 修改使用者資訊

1.我們可以将使用者的ID在get中進行傳參,得到使用者資訊。使用SQL語句将使用者資訊查詢出來。

<?php
if (is_numeric($_GET['id'])) {
   $id = (int) $_GET['id'];
}
$sql = "select id,username from user where id = " . $id;
$result = mysqli_query($conn, $sql);
$data = mysqli_fetch_assoc($result);
?>
           

2.将使用者的資訊配置設定到form表單中。當使用者點選送出時,我們在update.php送出使用者在form表當中修改的值。因為在update中修改的where條件中需要指定修改哪個使用者。是以,我們在input隐藏表單中放入使用者的ID。當點選送出的時候,隐藏的ID也會傳入到update頁面中。

3.使用者名通常是不讓修改的。是以,我在username這一個input表單最後增加了一個:readonly參數,不準修改使用者名。

<form action="update.php" method="post">
    使用者名:<input type="text" name="username" value="<?php echo $data['username'];?>" readonly><br />
    密碼:<input type="password" name="password"><br />
    <input type="hidden" value="<?php echo $data['id'];?>" name="id" />
    <input type="submit" value="送出">
</form>
           

update.php修改操作使用者資料

實際上,我們隻能夠修改使用者的密碼。有兩種情況:

    1.使用者修改了密碼

    2.使用者沒有修改密碼

其實我們可以欺騙前面的不懂技術的普通操作員。

    1.如果他沒有修改密碼,也給他提示成功

    2.如果他修改了使用者的密碼。我們真正的修改掉使用者的密碼,也提示修改成功。

擷取使用者ID和密碼

我們實作的過程當中需要擷取使用者ID。不然update語句生成的時候,沒有where條件會将整個表的資料全部修改掉的。

密碼之前是用md5存儲的。是以,使用者修改了密碼,密碼也應該用md5來存儲。

$id = (int)$_GET['id'];
$password = md5(trim($_POST['password']));
           

生成SQL語句

将使用者ID和密碼放至到修改的SQL語句中,發送至MySQL伺服器執行。即完成了修改密碼的操作。

$sql = "update user set password='" . $password . "' where id = $id";
$result = mysqli_query($conn, $sql);
if ($result) {
    echo '修改成功';
}
           

五: 修改代碼示範

在form表單中顯示使用者資訊的源代碼

<?php
if (is_numeric($_GET['id'])) {
   $id = (int) $_GET['id'];
}
$sql = "select id,username from user where id = " . $id;
$result = mysqli_query($conn, $sql);
$data = mysqli_fetch_assoc($result);
?>

<form action="update.php" method="post">
   使用者名:<input type="text" name="username" value="<?php echo $data['username'];?>"><br />
   密碼:<input type="password" name="password"><br />
   <input type="hidden" value="<?php echo $data['id'];?>" name="id" />
   <input type="submit" value="送出">
</form>
<?php
mysqli_close($conn);
?>
           

update.php修改的源代碼

<?php
include 'connection.php';
$id = (int) $_POST['id'];
if (trim($_POST['password'])) {
    $password = md5(trim($_POST['password']));
    $sql = "update user set password='" . $password . "' where id = $id";
} else {
    echo '修改成功';
}
$result = mysqli_query($conn, $sql);
if ($result) {
    echo '修改成功';
}
           

六: php資料庫操作之資料顯示亂碼解決辦法

解決亂碼問題的核心思想,就是:一定要多個不同的檔案系統中一定要統一編碼。

    1.html編碼與MySQL編碼一緻

    2.PHP編碼與MySQL編碼一緻

    3.若有header頭發送字元集,請與資料庫一樣

    4.<meta http-equiv=“Content-Type”content=“text/html; charset=utf-8” />要和頁面的文字編碼一緻

    5.資料庫建庫的字元集要統一

    6.表的字元集要統一

    7.列的字元集要統一(表設了,列就預設寫表的)

    8.連接配接,校驗的字元集要統一

    9.結果集的字元集要統一

1.html和PHP檔案的編碼,示例中:拿notepad++來示範。将PHP和html都要設為這種字元集。

一定要設定為utf-8無BOM格式。

2.如果php中有header頭,一定要是utf-8的

header('content-type:text/html;charset=utf-8');

3.如果html檔案編碼是utf-8的也要設定為一置

<meta http-equiv=“Content-Type”content=“text/html; charset=utf-8” />

4.建立資料庫編碼選擇 utf8_general_ci 

5.表和列建立的時候表為 utf8_general_ci 

6. 通過mysqli_set_charset('utf8')來MySQL連接配接、結果和校驗的字元集設定。

注:資料庫的字元集聲明和檔案中的略有不同。utf8為mysql資料庫的,utf-8為檔案中使用的。

php