批改状态:合格
老师批语:
今天是第十五天上课,朱老师先是讲了mysqli的数据库操作,继而讲了更高级的PDO数据库操作。
mysqli的查询操作。
代码:
<?php
/**
* 预处理查询操作
*/
//连接数据库
require 'demo1.php';
//准备SQL语句
$sql = "SELECT `id`,`name`,`salary` FROM `staff` WHERE `salary` > ? ;";
// 创建预处理对象
$stmt = $mysqli->stmt_init();
if ($stmt->prepare($sql)) {
//绑定参数
$stmt->bind_param('i', $salary);
//设置参数
$salary = 5000;
if ($stmt->execute()) {
//获取结果集并放到缓存区
$stmt->store_result();
//将结果集中的列绑定到变量上
$stmt->bind_result($id,$name, $salary);
//结果集是否不为,只有不为空的时候才遍历
if ($stmt->num_rows > 0) {
// 循环遍历结果集
// fetch()每次获取一条记录,并将指针自动下移
while ($stmt->fetch()) {
echo '<p>id:'.$id.'---姓名:' .$name.'---工资:'.$salary.'</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();点击 "运行实例" 按钮查看在线实例
PDO的优势:PDO(PHP Data Object)提供了一个数据访问抽象层,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据,就是说PDO提供了一个统一的数据访问接口。
PDO的连接数据库,可以看出PDO的连接数据库操作是十分精简的。
代码:
<?php
header('Content-type:text/html;charset=utf-8');
//数据源,数据库类型,数据库服务器以及默认的数据库
$dsn = 'mysql:host = 127.0.0.1; dbname = php';
$user = 'root';
$pass = 'root';
try{
$pdo = new PDO($dsn, $user, $pass);
// $pdo = new PDO('mysql:host=127.0.0.1;dbname = php','root','root');
echo '连接成功';
}catch(PDOException $e){
die('连接错误'.$e->getMessage());
}
//关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
PDO新增数据
<?php
header('Content-type:text/html;charset=utf-8');
/**
* 新增数据
*/
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
$sql = "INSERT `user` SET `name`= :name, `email`= :email, `password`= sha1(:password)";
$stmt = $pdo->prepare($sql);
//$stmt = $pdo->prepare("INSERT `user` SET `name`= :name, `email`= :email, `password`= sha1(:password)");
//$data = ['name'=>'zmx','email'=>'123@dd.com','password'=>'123456'];
//$stmt->execute($data);
$stmt->execute(['name'=>'zmx1','email'=>'123@dd.com','password'=>'123456']);
$stmt->execute(['name'=>'zmx2','email'=>'123@dd.com','password'=>'123456']);
$stmt->execute(['name'=>'zmx3','email'=>'123@dd.com','password'=>'123456']);
$stmt->execute(['name'=>'zmx4','email'=>'123@dd.com','password'=>'123456']);
$stmt = null;
//unset($stmt);
$pdo = null;点击 "运行实例" 按钮查看在线实例
PDO更新数据
代码:
<?php
/**
*更新
*/
header('Content-type:text/html;charset=utf-8');
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
$sql = "UPDATE `user` SET `email`= :email WHERE `id` = :id";
$stmt = $pdo->prepare($sql);
if($stmt->execute(['email' => 'werdd@.cn', 'id' => 5])){
echo '成功更新了'.$stmt->rowCount().'条记录';
}else{
print_r($stmt->errorInfo());
}
$stmt = null;
//unset($stmt);
$pdo = null;点击 "运行实例" 按钮查看在线实例
PDO删除数据
代码:
<?php
/**
*删除
*/
header('Content-type:text/html;charset=utf-8');
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
$sql = "DELETE FROM `user` WHERE `id` = :id";
$stmt = $pdo->prepare($sql);
if($stmt->execute(['id' => 8])){
echo '成功删除了'.$stmt->rowCount().'条记录';
}else{
print_r($stmt->errorInfo());
}
$stmt = null;
//unset($stmt);
$pdo = null;点击 "运行实例" 按钮查看在线实例
PDO查询数据
代码:
<?php
/**
* PDO 预处理查询
*/
//连接数据库
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
//准备SQL语句,占位符我们不再用?,用"命名占位符"
$sql = "SELECT `name`,`email` FROM `user` WHERE `id` < :id";
//创建预处理对象
$stmt = $pdo->prepare($sql);
//执行查询
$stmt->execute(['id'=>5]);
//将结果集中的列绑定到变量上
$stmt->bindColumn('name', $name);
$stmt->bindColumn('email', $email);
//用列变量来遍历结果集
while ($stmt->fetch(PDO::FETCH_BOUND)) {//FETCH_BOUND :设置一下当前模式为绑定模式,以防止意外,结果不受影响
echo '姓名: ',$name, ', 邮箱: ', $email, '<br>';
}
$stmt = null;
//unset($stmt);
$pdo = null;点击 "运行实例" 按钮查看在线实例
获取结果集记录数量时,查询获取的结果集无法得到准确的记录数的,rowCount()只能返回写操作(insert,update,delete)的受影响数,但select不是写操作一般用select count(*)来获取记录数
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号