PDO基本操作

PDO是PHP数据对象(PHP Data Object)的缩写。
PDO有非常多的操作却是MySQLi扩展库所不具备的优势:

  1. PDO 支持12中数据驱动和参数绑定,而 MySQLi 只支持 mysql。
  2. PDO 支持更高级的DB特性操作,如:存储过程的调度等,mysql原生库是不支持的。
  3. PDO 是PHP官方的PECL库,兼容性稳定性必然要高于MySQL Extension,可以直接使用 pecl upgrade pdo 命令升级。
  4. PDO 预处理可以防止SQL注入,确保数据库更加安全。
PDO数据库的连接
<?php
$db = [
    'type'=>'mysql',
    'host'=>'demo.com',
    'dbname'=>'demo',
    'username'=>'root',
    'password'=>'root',
];
//$dsn = 'mysql:host=demo.com;dbname=demo';
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
try{
    $pdo = new PDO($dsn, $db['username'],$db['password']);
}catch (PDOException $e){
    die('数据库连接失败:'.$e->getMessage());
}
新增
$sql = 'INSERT INTO `student` (`name`,`age`,`course`) VALUES (?, ?, ?)';
$stmt = $pdo->prepare($sql);
$name = '唐僧';
$age = 28;
$course = '英语';
$stmt->bindParam(1,$name);
$stmt->bindParam(2,$age);
$stmt->bindParam(3,$course);
$result = $stmt->execute();
if ($result){
    echo '成功插入'.$stmt->rowCount().'条数据,新增ID为:'.$pdo->lastInsertId();
}else{
    die('数据添加失败'.print_r($stmt->errorInfo(),true));
}
$pdo = null;
更新
$sql = 'UPDATE `student` SET `name` = ?, age= ?, course = ? WHERE id = ?';
$stmt = $pdo->prepare($sql);
$name = '观音';
$age = 26;
$course = '语文';
$id = 2;
$stmt->bindParam(1,$name);
$stmt->bindParam(2,$age);
$stmt->bindParam(3,$course);
$stmt->bindParam(4,$id);
$result = $stmt->execute();
if ($result){
    echo '成功更新'.$stmt->rowCount().'条数据';
}else{
    die('数据更新失败'.print_r($stmt->errorInfo(),true));
}
$pdo = null;
删除

占位符的另一种用法 :id ,绑定数据的时候使用bindParam('id', 参数变量)

$sql = 'DELETE FROM `student` WHERE id = :id ';
$stmt = $pdo->prepare($sql);
$id = 2;
$stmt->bindParam('id',$id);
$result = $stmt->execute();
if ($result){
    echo '成功删除'.$stmt->rowCount().'条数据';
}else{
    die('数据删除失败'.print_r($stmt->errorInfo(),true));
}
$pdo = null;
查询
  1. 无条件查询:使用 query() 执行 sql语句,返回PDOStament对象,结果集不用解析,可以直接遍历循环。
$sql = 'SELECT * FROM `student`';
$result = $pdo->query($sql);
if ($result->rowCount() > 0){
    $result->setFetchMode(PDO::FETCH_ASSOC);
    foreach ($result as $row){
        echo $row['name'].'---'.$row['age'].'---'.$row['course'];
    }
}else{
    die('查询失败'.print_r($pdo->errorInfo(),true));
}
$pdo = null;
  1. 有条件查询:使用 execute() 执行 mysql语句
$sql = 'SELECT * FROM `student2` WHERE id = :id ';
$stmt = $pdo->prepare($sql);
$id = 10;
$stmt->bindParam('id',$id);
$result = $stmt->execute();
if ($result){
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($row = $stmt->fetch()){
        echo $row['name'].'---'.$row['age'].'---'.$row['course'];
    }
}else{
    die('数据获取失败'.print_r($stmt->errorInfo(),true));
}
$pdo = null;

THE END !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值