作者:喵喵心碎 | 来源:互联网 | 2023-09-05 10:50
今天,学习了用PDO预处理技术对数据新增更新 删除,学习了可靠的得到查询数据数量的方法,还有学习了员工管理系统中的用户的查询更新保存的功能。一、PDO预处理数据的新增更新删
今天,学习了用PDO预处理技术对数据新增 更新 删除,学习了可靠的得到查询数据数量的方法,还有学习了员工管理系统中的用户的查询 更新 保存的功能。
一、PDO预处理数据的新增更新删除
这部分同昨天的查询大同小异,也是通过数据绑定来实现。
二、可靠的查询数据数量的方法
通过count函数得到符合条件的数据的数量,形成一个列,然后通过判断列是否有值,然后再进行查询。例如:
实例
//正确获取影响数
//连接数据库
$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 '
', print_r($item, true);
}
}
运行实例 »
点击 "运行实例" 按钮查看在线实例
三、案例:员工管理系统中的用户查询,更新,保存。
功能实现的流程为:user_list(查询所有用户)-》user_edit(更新用户的用户名与密码,ajax与user_manage交互)->user_manage(对提交过来的数据进行判定,然后对数据进行更新,然后再把处理后的结果数据返回给user_edit)
实例
//连接数据库
$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);
?>
用户设置
id |
用户名 |
邮箱 |
操作 |
---|
= $user['id']?> |
= $user['name']?> |
= $user['email']?> |
|
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
//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);
?>
用户编辑
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
//连接数据库
$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转换成整数