美文网首页
MySQLi扩展面向对象,实现学生列表数据的增删改查案例

MySQLi扩展面向对象,实现学生列表数据的增删改查案例

作者: 似朝朝我心 | 来源:发表于2021-06-08 22:18 被阅读0次

主要功能实现:显示列表数据功能,删除数据功能、增添数据功能、更新数据功能

数据库信息:


视图:

页面处理:index.php作为首页数据显示页面,addition.php作为数据增加操作页面,update.php作为数据更新操作页面,doAction.php作为数据接收处理页面


1.显示列表数据功能的实现:主要是用到foreach遍历

index.php

<?php 
<?php 
    # 1.建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
    $serverName = "localhost"; 
    $userName = "root";
    $password = "12345678"; 
    $database = "qinfb_school";
    $mysqli = @new mysqli($serverName,$userName,$password,$database);
    if($mysqli -> connect_errno){
        //如果有连接错误,得到错误信息
        die('Connect Error:'.$mysqli -> connect_error);
    }
    # 2.设置默认的客户端编码方式
    $mysqli -> set_charset('utf-8');

    # 3.执行SQL查询。
    $sql = "select stu_id,stu_name,stu_age from student";
    $mysqli_result = $mysqli -> query($sql); //得到一个结果集对象
    if($mysqli_result && $mysqli_result -> num_rows > 0){
        //通过遍历获取所有的结果集
        while($row = $mysqli_result -> fetch_assoc()){//产生1个关联数组
            $rows[] = $row;
        }
        //释放结果集内容的三种形式:
        $mysqli_result -> free();
        //$mysqli_result -> free_result();
        //$mysqli_result -> close();
    }else {
        echo '查询错误或者结果集当中没有记录!';
    }
    
    # 5.关闭数据库连接
    $mysqli -> close();
?>
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <h1>用户列表</h1>
    <h2 style="text-align: center;width: 40%;border: 1px seagreen solid;">
        <a href="addition.php">增加</a>
    </h2>
    <table border="1" width="40%" style="text-align: center;">
        <tr>
            <th>序号</th>
            <th>学生</th>
            <th>年龄</th>
            <th>操作</th>
        </tr>
        <?php $i=1; foreach($rows as $row):?>
            <tr>
                <td><?php echo $i;?></td>
                <td><?php echo $row["stu_name"];?></td>
                <td><?php echo $row["stu_age"];?></td>
                <td>
                    <a href="update.php?id=<?php echo $row['stu_id'];?>">修改</a>
                    <a href="doAction.php?act=delUser&id=<?php echo $row['stu_id']; ?>">删除</a>
                </td>
            </tr>
        <?php $i++; endforeach;?>
    </table>
</body>
</html>


2.数据的增加操作

addition.php

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <h2>添加学生信息</h2>
    <form action="doAction.php?act=addUser" method="post">
        <table border="1" >
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="stu_name" required="required" placeholder="请输入用户名"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="stu_psd" required="required" placeholder="请输入密码"></td>
            </tr>
            <tr>
                <td>年龄:</td>
                <td><input type="number" name="stu_age" min="1" max="30" placeholder="请输入年龄"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="添加用户"></td>
            </tr>
        </table>
    </form>
</body>
</html>

3.删除数据的页面处理,首先要拿到指定删除行的id,告诉doAction.php页面,它要删除哪一条,让url携带一个对应的操作id参数给doAction.php页面,让doAction.php来加工处理,删除数据库的指定内容。


4.数据更新页面,同样要拿到用户点击了哪一行的id号,同时在update.php这个页面拿到原先在index.php显示的内容,修改内容后,告诉doAction.php,让它去加工处理,更新数据库

<?php 
//根据用户传递过来的编号,查询到信息
    header('content-type:text/html;charset=utf-8');//设置请求头
    # 进行页面接收处理
    # 1.创建数据库连接,建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
    $serverName = "localhost"; 
    $userName = "root";
    $password = "12345678"; 
    $database = "qinfb_school";
    $mysqli = @new mysqli($serverName,$userName,$password,$database);//创建mysqli实例
    if($mysqli -> connect_errno){
        //如果有连接错误,得到错误信息
        die('Connect Error:'.$mysqli -> connect_error);
    }
    # 设置字符集
    $mysqli -> set_charset('utf-8');
    $id = $_GET["id"];//获取url传递过来的参数
    $sql = "select stu_id,stu_psd,stu_name,stu_age from student where stu_id =".$id;
    $mysqli_result = $mysqli -> query($sql);//执行query操作,返回的是一个$mysqli_result对象
    if($mysqli_result && $mysqli_result -> num_rows > 0){//判断结果集>0
        $row = $mysqli_result -> fetch_assoc();//获取结果集的记录
    }
    
?>


<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
</head>
<body>
    <h2>添加学生信息</h2>
    <form action="doAction.php?act=editUser&id=<?php echo $id;?>" method="post">
        <table border="1" >
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="stu_name" value="<?php echo $row["stu_name"];?>" required="required" placeholder="请输入用户名"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="stu_psd" required="required"  value="<?php echo $row["stu_psd"];?>" placeholder="请输入密码"></td>
            </tr>
            <tr>
                <td>年龄:</td>
                <td><input type="number" name="stu_age"  value="<?php echo $row["stu_age"];?>" min="1" max="30" placeholder="请输入年龄"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="更新数据"></td>
            </tr>
        </table>
    </form>
</body>
</html>

5.数据处理页面,主要使用switch case来判断post请求来自哪个页面,相对执行什么样的操作,比如:收到addition.php页面传来的请求,它告诉doAction.php页面,我需要向数据库中增加一行用户数据,那么doAction.php页面就会去执行处理数据增加这个操作

doAction.php 核心页面,也是我们的运转页面,数据处理的加工厂

<?php 
    header('content-type:text/html;charset=utf-8');//设置请求头
    # 进行页面接收处理
    # 1.创建数据库连接,建立到MySQL数据库的连接对象实例的同时打开指定的数据库。
    $serverName = "localhost"; 
    $userName = "root";
    $password = "12345678"; 
    $database = "qinfb_school";
    $mysqli = @new mysqli($serverName,$userName,$password,$database);//创建mysqli实例
    if($mysqli -> connect_errno){
        //如果有连接错误,得到错误信息
        die('Connect Error:'.$mysqli -> connect_error);
    }
    # 设置字符集
    $mysqli -> set_charset('utf-8');
    #获取表单提交过来的信息
    $stuName = $_POST["stu_name"];//获取form表单post过来的请求,提交的是学生名字
    $stuName = $mysqli -> escape_string($stuName);//进行转译特殊字符,过滤输入的特殊字符,例如单引号、双引号等
    $stuPsd = MD5($_POST["stu_psd"]);//提交的是密码,通过md5加密
    $stuAge = $_POST["stu_age"];//提交的是年龄
    $act = $_GET["act"];//$_GET获取url携带过来的参数,页面提交的操作类型
    $id = $_GET["id"];//获取删除id行号
    #根据不同操作完成不同的功能
    switch($act){
        case 'addUser':
        //echo '添加用户的操作';
        $sql = "insert student(stu_name,stu_psd,stu_age)
        values('{$stuName}','{$stuPsd}','{$stuAge}')";
        $res = $mysqli -> query($sql);//执行单条查询语句
        if($res){//判断$res为真
            #成功
            //$affect_rows = $mysqli -> affected_rows;//返回前一次 MySQL 操作所影响的记录行数。
            $insert_id = $mysqli -> insert_id;//返回上一步 INSERT 操作产生的 ID。
            echo <<< end
                <script>
                    alert('添加成功,往数据库中添加的第{$insert_id}位用户!')
                    location.href = 'index.php'
                </script>
end;
            exit();
        }else{
            # 失败
            echo <<< end
                <script>
                    alert('添加失败,请重新添加!')
                    location.href = 'addition.php'
                </script>
end;
            exit();
        }
        break;
        case 'delUser':
        //echo '删除记录'.$id;//
        $sql  = "delete from student where stu_id = ".$id;//删除指定的id行
        $res = $mysqli -> query($sql);//执行单条查询语句
        if($res){
            $message = '删除成功';
        }else {
            $message = '删除失败';
        }
        $url = 'index.php';
            echo <<< end
                <script>
                    alert('{$message}!')
                    location.href = '{$url}'
                </script>
end;
        exit();
        break;
        case 'editUser':
        $sql = "update student set stu_name='{$stuName}',stu_psd='{$stuPsd}',stu_age='{$stuAge}' where stu_id=".$id;
        $res = $mysqli -> query($sql);
        if($res){
                    $message = '更新成功';
                }else {
                    $message = '更新失败';
                }
                $url = 'index.php';
                    echo <<< end
                        <script>
                            alert('{$message}!')
                            location.href = '{$url}'
                        </script>
end;
                exit();
        break;
    }
?>

实际效果预览:
删除效果:


数据增加效果:

更新数据:

相关文章

网友评论

      本文标题:MySQLi扩展面向对象,实现学生列表数据的增删改查案例

      本文链接:https://www.haomeiwen.com/subject/pzzreltx.html