一、PDO的概念
PDO其实就是一个数据库的抽象层,使用PDO编程可以方便的在之后的实际运营中随时更改数据库而不用变更源代码。PDO的位置如下图所示:
二、PDO的开启
PDO需要使用php 5.1 之后的版本。
查看是否开启pdo功能需要新建一个php文件,使用phpinfo函数查询
如图,PDO驱动和pdo_mysql扩展均开启(enabled)
linux:
我的系统是ubuntu14.04.3,php版本是PHP 5.5.9-1ubuntu4.14 ,在我这里pdo扩展默认是开着的(在后期的php版本中pdo已经是核心功能,不需要再自行安装了,网上的教程都是针对之前的php版本的),而且php的mysql扩展也是默认开着的,不知道这是不是因为我用的是ubuntu版的php。如果mysql扩展没开的话也只需执行sudo apt-get install php5-mysql 安装驱动即可,别的数据库也是这样操作。
win:在php.ini文件中,把以下两行注释去掉
extension=php_pdo.dll //PDO驱动程序共享扩展必须有 (windows)
extension=php_pdo_mysql.dll //MySQL扩展
如果要开启别的数据库扩展去掉相应的注释即可
三、PDO的使用
3.1 PDO对象初始化
PDO的构造函数如下:
PDO __construct( string dsn
[, string username
[, string password
[, array driver_options]]] );
dsn数据库连接信息如“mysql:host=localhost;dbname=库名”
下面举个栗子:
$pdo = new PDO("mysql:host=localhost;dbname=phptest","root","123");
这就完成了PDO对象的初始化,所连接的数据库是mysql数据库的phptest这个数据库,使用的用户名和密码分别是root和123
如果把dsn信息写到配置文件中,则使用如下方式:
$pdo = new PDO("uri:MysqlDbo.ini","root","123"); \dsn数据写在MysqlDbo.ini文件中
3.2 PDO对象的使用
PDO的成员方法如下:
1 ) query($sql); //用于执行查询SQL语句。返回PDOStatement对象
2 ) exec($sql); //用于执行增、删、改操作,返回影响行数;
3 ) setAttribute(); //设置一个"数据库连接对象"属性。
4 ) fetchAll(); //解析数据
下面举例:
数据库原始数据如下:
查询数据:
1 <?php 2 //连接数据库 3 try { 4 $pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "20125202"); 5 } 6 catch (PDOException $e){ 7 die("数据库连接失败".$e->getMessage()); 8 } 9 //查询语句 10 $sql = 'select * from students'; 11 //执行语句、解析数据 12 echo ' id '.'____________'.'name'.'____________'.'sex'."<br>"; 13 foreach ($pdo->query($sql) as $val){ 14 echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>"; 15 } 16 ?>
效果如图:
插入数据:
1 <?php 2 //连接数据库 3 try { 4 $pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "123"); 5 } 6 catch (PDOException $e){ 7 die("数据库连接失败".$e->getMessage()); 8 } 9 //插入语句 10 $sql = "insert into students values('20125203','tony','female')"; 11 //执行语句、解析数据 12 $res = $pdo->exec($sql); 13 if ($res){ 14 echo "插入成功!</br>"; 15 } 16 //查询结果 17 $sql = 'select * from students'; 18 echo ' id '.'____________'.'name'.'____________'.'sex'."<br>"; 19 foreach ($pdo->query($sql) as $val){ 20 echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>"; 21 } 22 ?>
效果如图:
修改于删除数据操作类似
修改数据:
1 <?php 2 //连接数据库 3 try { 4 $pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "123"); 5 } 6 catch (PDOException $e){ 7 die("数据库连接失败".$e->getMessage()); 8 } 9 //插入语句 10 //$sql = "insert into students values('20125203','tony','female')"; 11 //修改语句 12 $sql = "update students set sex='male' where id='20125203'"; 13 //执行语句、解析数据 14 $res = $pdo->exec($sql); 15 if ($res){ 16 echo "修改成功!</br>"; 17 } 18 //查询结果 19 $sql = 'select * from students'; 20 echo ' id '.'____________'.'name'.'____________'.'sex'."<br>"; 21 foreach ($pdo->query($sql) as $val){ 22 echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>"; 23 } 24 ?>
效果如图:
删除数据:
1 <?php 2 //连接数据库 3 try { 4 $pdo = new PDO("mysql:host=localhost;dbname=phptest", "root", "20125202"); 5 } 6 catch (PDOException $e){ 7 die("数据库连接失败".$e->getMessage()); 8 } 9 //插入语句 10 //$sql = "insert into students values('20125203','tony','female')"; 11 //修改语句 12 //$sql = "update students set sex='male' where id='20125203'"; 13 //删除语句 14 $sql = "delete from students where id='20125203'"; 15 //执行语句、解析数据 16 $res = $pdo->exec($sql); 17 if ($res){ 18 echo "删除成功!</br>"; 19 } 20 //查询结果 21 $sql = 'select * from students'; 22 echo ' id '.'____________'.'name'.'____________'.'sex'."<br>"; 23 foreach ($pdo->query($sql) as $val){ 24 echo $val['id'].'____________'.$val['name'].'____________'.$val['sex']."<br>"; 25 } 26 ?>
效果如图:
以上就是PDO的基本使用方法与增删查改等操作。