mysql中具有很多扩张,mysql扩展、mydqli扩展、pdo_mysql扩展等.实现的功能都是相同的,pdo_mysql在高版本的PHP中推荐使用。
PHP数据库对象(PDO)扩展为PHP范文数据库定义了一个轻量级的一致接口。它提供了一个数据访问抽象层,不管使用哪种数据库,都可以使用想听的方法来获取数据。
实例化
$pdo=new PDO();
PDO::__construct(string $dsn [,string $username [,string $password [,array $driver_options]]]);因此实例化PDO对象时需要参数。
$dsn:数据源名称,包含了请求连接到数据库的信息。
$dsn='mysql:host=127.0.0.1;port=3306;dbname=数据库名称';
前缀mysql:用于说明数据库服务器的类型。
$username:用户名.
$password:用户密码.
$driver_option:驱动选项-->对于当前数据库服务器一些特定的初始化工作。
$driver_option=array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set naames utf8');
<?php
$username='root';
$password='root';
$dsn='mysql:host=localhost;dbname=study;port=3306';
$driver_option=array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set names utf8');
$pdo=new PDO($dsn,$username,$password,$driver_option);
var_dump($pdo);
返回结果为一个对象。和mysql_connect()(返回资源resource)不同,
执行sql语句
使用PDO对象中的query()方法。
<?php
echo '<pre>';
$username='root';
$password='root';
$dsn='mysql:host=localhost;dbname=study;port=3306';
$driver_option=array(PDO::MYSQL_ATTR_INIT_COMMAND=>'set names utf8');
$pdo=new PDO($dsn,$username,$password,$driver_option);
var_dump($pdo);
$sql='show databases';
$result=$pdo->query($sql);
var_dump($result);
此处结果与mysql_query()有所不同,mysql_query()产生的是一个结果集,而pdo由于是封装后的,在这里产生的是一个PDOStatement对象。
得到结果的处理
mysql类中使用mysql_fetch_arr();将结果集转为数组。
在PDO中可以使用fetchAll()来达到相同的功能。
用上面的结果:
$result->fetchAll();//$result是一个PDOStatement对象。
PDO对象的常用方法
errorInfo:sql执行过程失败时,产生错误信息。该信息是以数组的形式表现出来的;
errorCode:sql执行失败时,产生错误代码。
$sql='sho databases';//此处故意写错。(在已连接上数据库的前提下)
if(!$result=$pdo->query($sql)){
var_dump($pdo->errorInfo());
echo '<br/>'
var_dump($pdo->errorCode());
}
beginTransaction():开启事务
rollback():回滚事务
commit():提交事务
inTransaction():判断是否处于事务中
lastInsertID():最后形成的auto_increment字段的值
Exec():执行sql的方法。与query()不同,Exec()返回值为整型。表示当前执行sql所影响的记录数。
因此query()适合用于查询类:show、select、desc等。
Exec()适合用于非查询类:insert、delete、update等。