PHP之PDO

本文深入介绍了PHP数据对象(PDO)的使用,PDO为PHP访问数据库提供了统一的接口,支持多种数据库,如MySQL、PostgreSQL等。文章详细讲解了PDO的基本使用、连接数据库、执行查询、错误处理、事务管理及PDO类的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动可以公开具体数据库的特性作为标准扩展功能。 注意利用 PDO 扩展自身并不能实现任何数据库功能;必须使用一个 具体数据库的 PDO 驱动 来访问数据库服务。

PDO 提供了一个 数据访问 抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。 PDO 提供 数据库 抽象层;它不会重写 SQL,也不会模拟缺失的特性。如果需要的话,应该使用一个成熟的抽象层。

从 PHP 5.1 开始附带了 PDO,在 PHP 5.0 中是作为一个 PECL 扩展使用。 PDO 需要PHP 5 核心的新 OO 特性,因此不能在较早版本的 PHP 上运行。

官方文档:http://php.net/manual/zh/book.pdo.php

基本使用

连接

<?php
$dbms='mysql';     //数据库类型
$host='localhost'; //数据库主机名
$dbName='test';    //使用的数据库
$user='root';      //数据库连接用户名
$pass='';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";

try {
    $dbh = new PDO($dsn, $user, $pass); //初始化一个PDO对象
} catch (PDOException $e) {
    die ("Error!: " . $e->getMessage() . "<br/>");
}

查询

$sql="SELECT * FROM article";
$result=$dbh->query($sql);

 遍历结果集

if($result->columnCount()>0){
    /*
     *PDO::FETCH_NUM    返回索引数组
     *PDO::FETCH_ASSOC  返回关联数组
     *PDO::FETCH_OBJ    返回对象
     */
    while ($arr=$result->fetch(PDO::FETCH_NUM)){
        var_dump($arr);
    }
}

错误处理模式

PDO::ERRMODE_SLIENT         默认模式,静默模式

PDO::ERRMODE_WARNING    警告模式

PDO::ERRMODE_EXCEPTION 异常模式

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING)

 数据库的连接属性

设置属性方式一

$pdo=new PDO($dns,$user,$pwd,$option)

注:$option是一个数组

$option=array(

  PDO::ATTR_ERRMODE=>0,

  PDO::ATTR_AUTOCOMMIT

)

设置属性方式二

$pdo->setAttribute(PDO::ATTR_ERRMODE,0)

获取连接属性

$pdo->getAttribute(PDO::ATTR_ERRMODE)

事务的使用

// 关闭自动提交
$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0)
try{
  $pdo->beginnTransaction()
  // 业务逻辑
  if(/*业务逻辑没有正确执行*/ ){
    throw new Excepotion('错误描述','错误代码');
  }
  // 业务都正常则提交事务
  $pdo->commit();
}catch(Excepotion $e){
// 回滚事务
$pdo->rollBack();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值