目录
一: 数据库操作之删除
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为文件中使用的。