php操作数据库之删除修改,乱码处理

版权声明:俗世凡人行(释) QQ:748507607 https://blog.csdn.net/weixin_41887155/article/details/86103308

目录

一: 数据库操作之删除

二: 组合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为文件中使用的。

猜你喜欢

转载自blog.csdn.net/weixin_41887155/article/details/86103308
今日推荐