批改状态:合格
老师批语:
PDO 的优势:
PDO 是php数据对象,PDO是php所有操作的数据库一个统一的接口。php不会识别数据库:mysql,Oracle等。却识别PDO。
PDO代码比MySQL数据库更加简洁,简化点。
1、PDO数据库连接:
<?php
header('Content-type:text/html;charset=utf-8');// 设置编码
$host = 'mysql:host=127.0.0.1;name=php';
$user = 'root';
$pass = 'root';
// PDO 创建
$pdo = new PDO($host,$user,$pass);
// PDO连接判断
try{
$pdo = new PDO($host,$user,$pass);
// echo '<h2>连接成功</h2>';
}catch(PDOException $s){
die('连接失败:'.$s->getMessage());
}
// 关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
2、PDO增加数据:
<?php
header('Content-type:text/html;charset=utf-8');// 设置编码
// PDO 数据库连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 创建预处理对象并增加数据
$stmt = $pdo->prepare("INSERT `test` SET `name`=:name,`sex`=:sex");
$stmt->execute(['name'=>'金龙1','sex'=>'男']);
echo '成功添加:'.$stmt->rowCount().'条数据';
// 关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
3、PDO更新数据:
<?php
header('Content-type:text/html;charset=utf-8');// 设置编码
// PDO 数据库连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 创建预处理对象并增加数据(更新id为109的数据)
$stmt = $pdo->prepare("UPDATE `test` SET `name`=:name WHERE `id`=:id");
$stmt->execute(['name'=>'金龙哈哈','id'=>'109']);
echo '成功更新:'.$stmt->rowCount().'条数据';
// 关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
4、PDO 删除数据:
<?php
header('Content-type:text/html;charset=utf-8');// 设置编码
// PDO 数据库连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 创建预处理对象并增加数据
$stmt = $pdo->prepare("DELETE FROM `test` WHERE `id`=:id");
$stmt->execute(['id'=>109]);
echo '成功删除:'.$stmt->rowCount().'条数据';
// 关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
5、PDO查询数据:
<?php
header('Content-type:text/html;charset=utf-8');// 设置编码
// PDO 数据库连接
$pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root');
// 创建预处理对象并增加数据(查询字段 为 name salary,并且字段 id为条件)
$stmt = $pdo->prepare("SELECT `name` `salary` FROM `test` WHERE `id`>:id");
// 查询 id 字段为 大于100 的数据
$stmt->execute(['id'=>100]);
while($row = $stmt->fetch(Pdo::FETCH_ASSOC)){
echo var_export($row),'<br>';
}
// 关闭连接
$pdo = null;点击 "运行实例" 按钮查看在线实例
6、获取结果集记录数量的正确方式是什么?
采用 prepare("select count(*) from staff where salary > :salary"); 方法
实例
<?php header('Content-type:text/html;charset=utf-8');// 设置编码 // PDO 数据库连接 $pdo = new PDO('mysql:host=127.0.0.1;dbname=php','root','root'); // 创建预处理对象 $stmt = $pdo->prepare("select count(*) from `test` where salary > :salary"); $stmt->execute(['salary'=> 20000]); echo '大于2000的人数:'.$stmt->fetchColumn();// // 关闭连接 $pdo = null;
运行实例 »点击 "运行实例" 按钮查看在线实例
7、MySQLi面向对象中的查询操作:
<?php
header('Content-Type:text/html;charset=utf-8');
require 'demo.php'; // 导入文件,数据库连接
// sql 查询语句
$sql = "SELECT `id`,`name`,`salary` FROM `test` WHERE `salary` >?;";
// 创建预处理对象
$stmt = $mysqli->stmt_init();
if($stmt->prepare($sql)){
// 数据类型为 int 与salary字段绑定
$stmt->bind_param('i',$salary);
// 设置salary值
$salary = 2000;
if($stmt->execute()){
// 获取的结果集并放在缓存区
$stmt->store_result();
//将结果集中的列绑定到变量上
$stmt->bind_result($id,$name,$salary);
if($stmt->num_rows > 0){
while($stmt->fetch()){
echo '<p>id:'.$id.'---姓名:' .$name.'---工资:'.$salary.'</p>';
}
}else{
exit('<p>当前表中没有数据</p>');
}
$stmt->free_result();
}else{
exit($stmt->errno.':'.$stmt->error);
}
}else{
exit($stmt->errno.':'.$stmt->error);
}
$stmt->close();
$mysqli->close();点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号