PHP开发基础教程之批量和指定...LOGIN

PHP开发基础教程之批量和指定删除用户

封装数据库连接函数

在真实的项目中,我们是将主机、用户名、密码、库都写在配置文件当中。
如果在代码中写死了,万一数据库服务器的相关信息发生变化了,要把所有代码修改一次显然不符合程序员的思维。

此外,在每一个需要连接数据库的页面中。我们都需要写上连接、判断错误、设置字符集、太过于麻烦。并且不利于重复使用这些代码。

我们可以用上之前讲过的include系列函数达成目标。示例图如下:

118.png

因此,我们可以做一个配置文件config.php。将需要使用到的配置全部设置为常量,代码如下:

<?php
//数据库服务器
define('DB_HOST', 'localhost');

//数据库用户名
define('DB_USER', 'root');

//数据库密码
define('DB_PWD', 'secret');

//库名
define('DB_NAME', 'book');

//字符集
define('DB_CHARSET', 'utf8');

我们将connection.php页面抽取出来,以后需要连接数据库的时候只需要包含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);

我们在以后每个文件使用中直接包含 connection.php文件就可以实现数据库连接了:

include 'connection.php';

把上面的准备工作完成,接下来完成删除数据


批量和指定删除用户

在删除前,需要判断是删除单行数据还是删除多行数据。

  • 单行是通过get传参的方式向delete.php文件中写上对应的ID。

  • 而多个删除是通过POST的方式向delete.php页面中传递对应的ID。

  • 如果这两个都不符合的话,那我们可以视为数据不合法。

if (is_array($_POST['id'])) {

    $id = join(',', $_POST['id']);

} elseif (is_numeric($_GET['id'])) {

    $id = (int) $_GET['id'];

} else {
    echo '数据不合法';
    exit;
}


组合SQL语句

我们之前给大家在MySQL这一章时讲解过删除时可以使用到in的子语句。

同样在这里,我们就可以用in的子语句来达到效果。

join函数将多选删除传过来的id变为了3,4,5的格式,最终多选删除的SQL语句执行出来的效果就是:

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

而单选删除的语句效果就是:

delete from user where id in(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 '删除失败';
}


下一节
<?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 '删除失败'; }
提交重置代码
章节课件