今天学习了MySQLi面向对象中如何使用数据的增删改查操作;什么是PDO,PDO又有哪些优势,PDO如何进行数据的增删改查操作,通过哪些方法能够获取结果集的记录数量?
代码:
<?php
/**
*MySqli查询操作
*/
//连接数据库
require 'index.php';
//准备SQL语句
$sql = "SELECT `id`,`name`,`password` FROM `user` WHERE `id` > ? ;";
// 创建预处理对象
$stmt = $mysqli->stmt_init();
if ($stmt->prepare($sql)) {
//绑定参数
$stmt->bind_param('i', $id);
//设置参数
$id = 10;
if ($stmt->execute()) {
//获取结果集并放到缓存区
$stmt->store_result();
//将结果集中的列绑定到变量上
$stmt->bind_result($id,$name, $password);
//结果集是否不为,只有不为空的时候才遍历
if ($stmt->num_rows > 0) {
// 循环遍历结果集
// fetch()每次获取一条记录,并将指针自动下移
while ($stmt->fetch()) {
echo '<p>id:'.$id.'<br>用户名:' .$name.'<br>密码:'.$password.'</p>';
}
} else {
exit('<p>当前表中没有数据</p>');
}
// 释放结果集
$stmt->free_result();
} else {
//返回执行阶段的出错信息
exit($stmt->errno.': '.$stmt->error);
}
} else {
//返回sql语句检测阶段的出错信息
exit($stmt->errno. ': ' . $stmt->error);
}
//注销stmt对象
$stmt->close();
//关闭连接
$mysqli->close();点击 "运行实例" 按钮查看在线实例
浏览图:

代码:
<?php
/**
* PDO连接数据库
*/
//设置数据库类型 以及数据库服务器和默认的数据名
$dsn = 'mysql:host=127.0.0.1; dbname=ceshi';
//用户名
$user = 'root';
//密码
$pass = '123456';
//实例化PDO类,创建pdo对象,并完成了数据库的连接
try {
$pdo = new PDO($dsn, $user, $pass);
echo '<h2>连接成功</h2>';
} catch (PDOException $e) {
die('Connect ERROR! :'. $e->getMessage());
}
$pdo = null;
// 关闭连接
unset($pdo);点击 "运行实例" 按钮查看在线实例
浏览图:

代码:
<?php
//PDO新增数据
//1.连接数据
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
$sql="INSERT `user` SET `name`= :name,`password`= sha1(:password) ";
//2.创建预处理对象
$stmt=$pdo->prepare($sql);
//3.执行添加
$stmt->execute(['name'=>'huang','password'=>'6666']);
$stmt->execute(['name'=>'hao','password'=>'6666']);
$stmt->execute(['name'=>'ling','password'=>'6666']);
$stmt->execute(['name'=>'ke','password'=>'6666']);
echo '成功添加了'.$stmt->rowCount().'条用户';
$stmt = null;
// 关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
浏览图:


代码:
<?php
/**
* PDO更新操作
*/
//1.连接数据
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
$sql="UPDATE `user` SET `name`= :name WHERE id= :id";
//2.创建预处理对象
$stmt=$pdo->prepare($sql);
//执行SQL语句
$stmt->execute(['name'=>'牛郎','id'=>7]);
echo '修改完成'.$stmt->rowCount().'条用户名';
$stmt=null;
//关闭连接
$pdo= null;点击 "运行实例" 按钮查看在线实例
浏览图;


代码:
<?php
/**
* PDO删除操作
*/
//1.连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
//2.准备SQL语句
$sql="DELETE FROM `user` WHERE `id`= :id";
//3.创建预处理对象
$stmt=$pdo->prepare($sql);
//判断执行SQL语句
if($stmt->execute(['id'=>7])){
echo '您已成功的删除了'.$stmt->rowCount().'个账号';
}else{
echo '不成在';
print_r($stmt->errorInfo());
exit();
}
$stmt=null;
//关闭连接
$pdo=null;点击 "运行实例" 按钮查看在线实例
浏览图:


代码:
<?php
/**
* PDO查询操作
*/
//连接数据库
$pdo=new PDO('mysql:host=127.0.0.1;dbname=ceshi','root','123456');
//准备SQL语句
$sql="SELECT `name` FROM `user` WHERE `id`=:id ";
//创建预处理对象
$temt=$pdo->prepare($sql);
//执行查询
$temt->execute(['id'=>10]);
//将结果集中的列绑定到变量上
$temt->bindColumn('name',$name);
while ($temt->fetch(PDO::FETCH_BOUND)){
echo '您查询的用户名为'.$name.'<br>';
}
$stmt=null;
//关闭连接
$pdo= null;点击 "运行实例" 按钮查看在线实例
浏览图:


PDO的优势:
PDO是PHP数据对象(PHP Date Object)的缩写,是PHP操作所有数据库的抽象层,提供了一个统一的访问接口;
1:PDO可以使用相同的SQL语句执行不同的数据库,而MySqli只能执行MySql一种数据库。
2:PDO支持更高级的DB特性操作
3:PDO是PHP官方的PECL库,兼容性稳定性高
4:PDO可以防止SQL注入,确保数据库更加安全
获取结果集记录数量的正确方式是什么?
获取结果集有三种方法,分为fetch() tchColumn() fetchAll()
fetch()方法
fetch()方法用于获取结果集的下一行
在PDO中通过预处理语句prepare()和execute()执行SQL查询语句,并且应用while()语句和fetch()方法完成数据的循环输出
fetchAll()方法
fetchAll()方法是为了获取结果集的所有行,其返回值是一个包含结果集中所有数据的二进制数组
fetchColumn()方法
fetchColumn()方法获取结果集中下一行指定列的值
通过fetchColumn()方法获取结果集中下一行中指定列的值。(或第一列id的值)
总结:
熟悉了如何使用MySqli对数据进行增删查改;
熟悉了使用PDO对数据进行增删查改;
准备好SQL语句后,需先创建预处理对象prepare(),然后才能执行SQL语句execute();
PDO比MySqli更加简洁,更加具有安全性,其兼容稳定性更高;
在结束流程后进行注销其预处理对象,关闭数据库连接,;
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号