解析结果集
PDO(PHP Data Object)
PDO是PHP数据对象的英文缩写,英文全称为PHP Data Object,是又MySQL官方封装的、基于面向对象编程思想的、使用C语言开发的数据库抽象层。
配置PDO
Windows下启动PDO需要在“php.ini”文件中进行配置,添加扩展:
extension=php_pdo.dll
在最新版PHP中,PDO已经默认开启,只需要启动其他数据库扩展即可。配置好这些后重启Apache服务。执行phpinfo()函数,看到PDO配置项,说明开启成功。
MySQL
访问数据库
与mysqli扩展类似,PDO扩展也是实例一个PDO对象,然后可以调用相关方法和属性来执行数据库的操作。
连接服务器
使用PDO与服务器建立连接,需要先使用构造方法来创建PDO实例,PDO的构造方法如下:
_construct(stringdata_source_name [,string user[,string pwd[,array driver_options]]])
datasourcename : 数据源,该参数包括了数据库名,主机名。MySQL数据库的DSN为:“mysql:host=localhost;dbname=account_db; port=3306”
user:数据库服务器用户名
pwd:为数据库服务器密码
数据库连接成功后,将返回一个PDO的实例,连接失败将会抛出一个PDOException异常,通常会使用try/catch语句进行处理。
关闭数据库
要想关闭连接,需要销毁对象以确保所有到它的引用都被删除,可以给变量赋一个NULL。
执行SQL语句
PDO提供了三种执行SQL语句的方法,分别是exec(),query(),预处理语句。
exec()
exec()方法可以执行一条语句,并返回受影响的行数,它的语法格式如下:
int PDO::exec(String sql)
exec()方法通常用于insert into,delete,update等语句。
<?phpecho "
";$dbms = "mysql";$server = "localhost";$username = "root";$password = "123456";$dsn = "$dbms:host=$server";try {$pdo = new PDO ( $dsn, $username, $password );echo "PDO连接MySQL数据库服务器成功";print ($pdo->exec ( "create database account_pdo_db" )) ;print ($pdo->exec ( "use account_pdo_db" )) ;print ($pdo->exec ( "set names utf8" )) ;print ($pdo->exec ( "create table account(id int auto_increment primary key, username varchar(50) not null, password varchar(50) not null, email varchar(50) not null)" )) ;print ($pdo->exec ( "insert into account(username, password, email) values ('Jack', '123456', 'jack@example.com')" )) ;print ($pdo->exec ( "insert into account(username, password, email) values ('Lucy', '123456', 'lucy@example.com')" )) ;$pdo = null;} catch ( PDOException $e ) {echo "PDO连接MySQL数据库服务器失败";die ();}?>
query()
query()方法不同于exec(),通常用于select语句中,它的返回值是PDOStatement的实例,是POD里的结果集。它的语法如下:
PDOStatement PDO::query(String sql)
<?phpecho "
";$dbms = "mysql";$server = "localhost";$username = "root";$password = "123456";$dbname = "account_pdo_db";$dsn = "$dbms:host=$server;dbname=$dbname";try {$pdo = new PDO ( $dsn, $username, $password );echo "
PDO连接MySQL数据库服务器成功
";$result = $pdo->query ( "select * from account" );foreach ( $result as $row ) {var_dump ( $row );}$pdo = null;} catch ( PDOException $e ) {echo "PDO连接MySQL数据库服务器失败";die ();}?>