目錄
一: 資料庫操作之删除
二: 組合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為檔案中使用的。