PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。
使用PDO的好处
- 编码一致性:PDO支持多种数据库扩展,并为其提供统一的访问接口
- 灵活性:PDO提供了统一的SQL操作方法和属性
- 高效性:PDO是用C编写、PHP编译的
- 面向对象:PDO完全采纳面向对象的思想
连接MySQL数据库
<?php
$user = "root";
$pwd = "";
$host = 'localhost';
$dbname = 'rk_osc';
$dsn = "mysql:host={$host};dbname={$dbname}";
$pdo = new PDO($dsn,$user,$pwd,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));
$sql = "SELECT * FROM tb_user LIMIT 10";
try{
//返回PDOStatement对象
$values = $pdo->query($sql);
foreach( $values as $value )
{
var_dump($value);
}
}
catch(PDOException $e){
die("发生错误:".$e->getMessage());
}- dsn指的是数据源,格式为
mysql:host=localhost;dbname=rk_osc - PDO对象有4个参数,参数分别为dsn(数据源)、数据库用户名、数据库密码,第四个参数(数组)可选
- array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8")设置编码为utf8,防止乱码
- PDOException:代表一个由 PDO 产生的错误。在自己的代码不应抛出一个 PDOException 异常。
PDO常用函数
exec()执行一条SQL语句,返回受影响的行数。用于增删改,对查询返回0query()执行一条SQL语句,返回PDOStatement对象,用于保存结果集prepare()执行一条SQL语句,返回PDOStatement对象quote()返回一个添加引号的字符串,用于SQL语句,可防止SQL注入lastInsertId返回最后插入的IDsetAttribute()设置数据库连接属性getAttribute()获取数据库连接属性errorCode()获取跟数据库句柄上一次操作相关的SQLSTATEerrorInfo()获取跟数据库句柄上一次操作相关的错误信息beginTransaction()开启一个事务。需要先关闭自动提交commit()提交事务rollBack()回滚事务inTransaction()检查操作是否在事务内
PDOStatement对象可操作的函数
execute()执行一条预处理语句rowCount()返回上一个SQL语句影响的行数fetch()从结果集中获取一行fetchAll()返回一个包含结果中所有行的数组setFetchMode()设置默认获取结果集的模式fetchObject()获取结果集下一行并作为对象返回fetchColumn()获取结果集下一行的单独一列bindParam()绑定一个参数到指定的变量名bindValue()将某个值绑定到指定的参数bindColumn()绑定一列到PHP变量getColumnMeta()返回结果集中一列的元素据columnCount()返回结果中的列数setAttribute()设置一个语句属性getAttribute()获取一个语句属性errorCode()获取跟数据库句柄上一次操作相关的SQLSTATEerrorInfo()获取跟数据库句柄上一次操作相关的错误信息debugDumpparams()打印一条SQL预处理语句nextRowset()在一个多行集语句句柄中推进到下一个行集
从结果中取出一行
$query = $db->prepare($sql);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);返回执行结果的行数
$q = $db->query(“SELECT …”);
$rows = $q->fetchAll();
$rowCount = count($rows);此文部分内容参考了:
