前言:
- 简介:PDO 就是
PHP Data Object
的简称; - 用途:PDO主要用来代替数据库操作类;
- 优势:PDO同时可以操作多个数据库,例如:
mysql
、sql server
、Oracle
、DB2
等; - 其他:
PDO扩展为PHP访问数据库定义了一个轻量级的一致性的接口,无论使用什么数据库,都可以通过一致的函数来执行查询和获取数据;
PDO是一个数据库访问抽象层,作用是同一各种数据库的访问接口与MYSQL
和MSSQL
函数库相比, PDO让跨数据库的使用更具有亲和力,与ADODB
和MDB2
相比,PDO
更高效;
PHP中的PDO访问流程图:
数据库的配置信息:
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=student;charset=utf8";
$username = "root";
$password = "password";
创建PDO 类的对象:
$pdo = new PDO($dns,$username,$password);
插入一条记录:
$sql = "insert into student values(null,"酒","男","18")";
$record = $pdo->exec($sql); // exec() 不会返回结果集,返回整型;
echo “插入了{$record}条记录";
执行 SQL 语句:query():
// 以 PDOStatement 对象形式返回结果集
描述:执行select、show语句,并返回一个结果集对象(PDOStatement)
语法:public PDOStatement PDO::query(string $Statement)
$dsn = "mysql:host=localhost;port=3306;dbname=student;charser=urf8";
$username = "root";
$password = "root";
$pdo=new pdo($dsn,$username,$password);
// 查询数据并返回结果集
$sql="select * from student order by id desc";
$PDOStatement = $pdo->query($sql);
// 遍历对象
forach($PDOStatement as $row){
print_r($row); // 由于是数组,所以用print_r打印输出查看;
}
下面是我从数据库查询到的数据:
Array
(
[id] => 19
[0] => 19
[name] => 张学友
[1] => 张学友
[sex] => 男
[2] => 男
[age] => 34
[3] => 34
[class] => 5班
[4] => 5班
)
Array
(
[id] => 18
[0] => 18
[name] => 酒淋后
[1] => 酒淋后
[sex] => 男
[2] => 男
[age] => 12
[3] => 12
[class] => 5班
[4] => 5班
)
Array
(
[id] => 16
[0] => 16
[name] => 法定
[1] => 法定
[sex] => 男
[2] => 男
[age] => 281
[3] => 281
[class] => 5班
[4] => 5班
)
执行 SQL 语句:feach():
描述:从结果集中获取一行,并将指针下移;
语法:mixed PDOStatement::fetch([int $fetch_tyle])
参数:
PDO::FETCH_ASSOC:返回一个索引为结果集的数组;
PDO::FETCH_BOTH:返回一个索引为结果集和以0开始的列号数组(该参数为默认参数,上面就是这个默认参数输出的数据);
PDO::FETCH_NUM:返回索引为以0开始的结果集列号的数组;
例:
$arr=$PDOStatement->fetch(PDO:FETCH_ASSOC);
print_r($arr);
下面是我从数据库查询到的数据:
Array
(
[id] => 19
[name] => 张学友
[sex] => 男
[age] => 34
[class] => 5班
)
执行fetchAll()
描述: 返回一个包含结果集中所有行的数组
语法:同fetch
$arrs=$PDOStatement->fetchAll(PDO::FETCH_ASSOC);
print_r($arrs);
下面是我从数据库查询到的数据:
执行fetchColumn()
描述:从结果集中获取单独的列;
语法:string PDOStatement::fetchCloumn([int $cloumn_number = 0]);
参数:$cloumn_number是列的索引值,默认为 “ 0 ” ;
测试:
$recods = $PDOStatement->fetchColumn();
echo "共有{$recods}条记录!";
如果我把参数改成1,所以这个fetchcolumn 还是没搞懂!
$recods = $PDOStatement->fetchColumn(1);
echo "共有{$recods}条记录!";
测试一下 rowcount()
$sql="select * from student order by id desc";
$PDOStatement = $pdo->query($sql);
$records = $PDOStatement->rowcount();
echo "共有{$records}条记录!";
其他: