博客列表 >PDO对数据库的新增 更新 删除与员工管理系统(PDO操作的增删改、可靠的查询数据的数量、案例用户管理系统中的查询显示、更新修改)2019年2月25日22时03分

PDO对数据库的新增 更新 删除与员工管理系统(PDO操作的增删改、可靠的查询数据的数量、案例用户管理系统中的查询显示、更新修改)2019年2月25日22时03分

小明的博客
小明的博客原创
2019年03月28日 19:37:11640浏览

今天,学习了用PDO预处理技术对数据新增 更新  删除,学习了可靠的得到查询数据数量的方法,还有学习了员工管理系统中的用户的查询 更新 保存的功能。

一、PDO预处理数据的新增更新删除

这部分同昨天的查询大同小异,也是通过数据绑定来实现。

二、可靠的查询数据数量的方法

通过count函数得到符合条件的数据的数量,形成一个列,然后通过判断列是否有值,然后再进行查询。例如:

实例

<?php
//正确获取影响数
//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//用count函数获取影响行数的列
$sql = 'SELECT count(*) FROM `admin` WHERE `age`>:age';
$stmt = $pdo->prepare($sql);
$stmt->execute(['age'=>40]);
if ($stmt->fetchColumn(0)) {
    $sql = 'SELECT * FROM `admin` WHERE `age`>:age';
    $stmt = $pdo->prepare($sql);
    $stmt->execute(['age'=>40]);
    foreach ($stmt->fetchAll() as $item) {
        echo '<pre>', print_r($item, true);
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、案例:员工管理系统中的用户查询,更新,保存。

功能实现的流程为:user_list(查询所有用户)-》user_edit(更新用户的用户名与密码,ajax与user_manage交互)->user_manage(对提交过来的数据进行判定,然后对数据进行更新,然后再把处理后的结果数据返回给user_edit)

实例

<?php
//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//sql语句
$sql = 'SELECT * FROM `user` LIMIT 1';
//准备对象
$stmt = $pdo->prepare($sql);
//执行
$stmt->execute();
// 员工信息
$user = $stmt->fetch(PDO::FETCH_ASSOC);

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户设置</title>
    <style>
        table,th,td {
            border: 1px solid #666;
            padding: 8px;
        }
        table {
            border-collapse: collapse;
            width: 80%;
            text-align: center;
            margin: 30px auto;
        }
        thead tr:first-of-type {
            background-color: lightblue;
        }


        table > caption {
            font-size: 1.2rem;
            margin-bottom: 15px;
        }

        button:hover {
            cursor: pointer;
            background-color: lightblue;
        }
    </style>
</head>
<body>
    <table>
        <caption>用户设置</caption>
        <thead>
            <tr>
                <th>id</th>
                <th>用户名</th>
                <th>邮箱</th>
                <th>操作</th>
            </tr>
            <tr>
                <td><?= $user['id']?></td>
                <td><?= $user['name']?></td>
                <td><?= $user['email']?></td>
                <td>
                    <button onclick="location.href='user_edit.php?id=<?= $user['id']?>'">编辑</button>
                </td>
            </tr>
        </thead>
    </table>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
    //echo $_GET['id'];
    //连接数据库
    $pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
    //sql语句
    $id = intval(trim($_GET['id']));
    $sql = "SELECT * FROM `user` WHERE `id`={$id} ";
    //准备对象
    $stmt = $pdo->prepare($sql);
    //执行查询
    $stmt->execute();
    //获取查询结果数组
    $user = $stmt->fetch(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <title>用户编辑</title>
    <style>
        h3 {
            text-align: center;
        }

        div {
            width: 300px;
            height: 180px;
            /*background-color: lightblue;*/
            margin: 0 auto;
            text-align: center;
            padding: 20px;
            border: 1px dashed #888;
            border-radius: 5%;
        }

        div input {
            border: none;
            border-bottom: 1px solid #333;
        }

        button:hover {
            cursor: pointer;
            background-color: lightblue;
        }

        .success {
            color: green;
        }
        .error {
            color: red;
        }

    </style>
</head>
<body>
    <h3>用户编辑</h3>
    <div>
        <form name="user">
            <p>
                <label>用户名:
                    <input type="text" name="name" value="<?=$user['name']?>" disabled>
                </label>
            </p>

            <p>
                <label>邮   箱:
                    <input type="email"  id="email" name="email" value="<?=$user['email']?>" autofocus>
                </label>
            </p>

            <p>
                <label>密   码:
                    <input type="password" id="password" name="password" value="<?=$user['password']?>">
                </label>
            </p>
            <!--            将当前用户的id,做为更新条件,以隐藏域的方式发送到服务器端-->
            <input type="hidden" id="id" value="<?=$user['id']?>">
            <p>
                <button type="button" onclick="save(this.form)">保存</button>
                <button type="button" onclick="history.back()">取消</button>
            </p>

            <!-- 提示信息占位符-->
            <p></p>
        </form>
    </div>

<!--    ajax提交修改数据-->
    <script>
        function save(form) {
        //    ajax提交
            var request = new XMLHttpRequest();
            // 请求成功的回调处理
            request.onreadystatechange = function () {
                if (request.readyState === 4 && request.status === 200) {
                    var data = JSON.parse(request.responseText);
                    // 获取信息提示占位元素
                    var tips = form.lastElementChild;
                    tips.innerHTML = data.message;
                    if (data.status === 1) {
                        tips.classList.add('success');
                    } else {
                        tips.classList.add('error');
                    }
                    // 2秒钟跳转到上个页面
                    setTimeout(function () {
                        history.back();
                    }, 2000);
                }

            };
        //    设置请求参数
            request.open('POST', 'user_manage.php?action=save');
        //    设置请求头信息
            request.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
            // 发送请求
            request.send('email='+form.email.value+'&password='+form.password.value+'&id='+form.id.value);
        }
    </script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php', 'root', 'root');
//获取action方法
$action = strtolower(trim($_GET['action']));
//对action方法分别进行操作
switch ($action) {
    case 'save':
        $sql = "UPDATE `user` SET `email`=:email, `password`=:password WHERE `id`=:id";
        $stmt = $pdo->prepare($sql);
        $email = strtolower(trim($_POST['email']));
        $password = strtolower(trim($_POST['password']));
        $id = strtolower(trim($_POST['id']));

        $stmt->bindParam('email', $email, PDO::PARAM_STR, 60);
        $stmt->bindParam('password', $password, PDO::PARAM_STR, 20);
        $stmt->bindParam('id', $id, PDO::PARAM_INT);

        if ($stmt->execute()) {
            if ($stmt->rowCount() === 1) {
                $status = 1;
                $message = '保存成功';
            } elseif ($stmt->rowCount() === 0) {
                $status = 0;
                $message = '信息没有更新';
            }
        } else {
            $status = -1;
            $message = '保存失败';
        }
        echo json_encode(['status'=>$status, 'message'=>$message]);
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

四、总结

今天重点再案例上,难度不大但是涉及到3个页面,以及ajax的交互。这三个页面中数据的交互为:user_list是将用户中的所有数据查询然后显示,通过点击编辑按钮将id值通过get方式传递到user_edit,user_edit通过传过来的id值就可以将相应的id email  password进行展示,然后通过点击保存按钮触发其绑定的save方法,save方法主要是通过ajax将数据异步到user_manage,传输的数据有post方式的表单中的email  password 和隐藏的id  还有get方式的action值为save,数据到了user_manage后开始处理,如果action的值为save 那么就进行更新操作,更加rowcount的值来判断他是否进行修改 ,再按照实际情况将分别赋值status message,通过json格式返回给user_edit,user_edit根据相应的值进行相应的显示。

还学习了json格式,他是html认识的数据格式,php中通过json_encode返回一个json格式 js中通过json.parse()来解析成为对象或者数组;

php中trim函数用来去掉空格  strtolower用来转换为小写  intval转换成整数

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议