《Php笔记2.1》PDO 对象认识与应用
在做项目的时候,PHP 是可以处理各种数据系统的,包括 MySQL、Oracle、MSSQL、SQLite,但是不同的数据系统之间使用的函数是不同的。之前使用的 mysql和mysqli 只能处理 MySQL 数据库。如果换成别的数据库就必须重新学习别的数据库函数,很麻烦同时移植也比较困难。为了解决这个问题,就需要一个“数据库抽象层”来实现,于是我们学习的 PDO 就此出现。
PDO 对象认识
本课时讲解 PDO 扩展开启、PDO 的优势以及工作原理。
PDO的安装包括驱动及扩展
PDO工作原理,PDO包括:
1. PDO类(包含很多方法)
2. PDOStatement 预处理类(执行完操作返回时用预处理类来作一些处理)
3. PDOException 异常处理
4. PDO DRrivers 驱动器(连接其他所有数据库所必须)
PDO类有构造方法,
PDOStatement类没有构造方法,是一个单太类(一种设计模式)
<?php //echo phpinfo(); //单太类(目的是为了产生唯一的对象) class A{ private static $a = null; private function __construct(){ } static function makeA(){ if(self::$a == null){ self::$a = new self(); } return self::$a; } } print_r(A::makeA());
PDO 对象初始化
本课时讲解 PDO 初始化的三种方式:传统 PDO 初始化、通过配置文件初始化、配置 php.ini 初始化。
传统PDO初始化:
try{ $pdo = new PDO("mysql:host=localhost;dbname=woodk;", "root", "root"); }catch(PDOException $e){ die("数据库连接失败".$e->getMessage()); }
通过配置文件初始化:
mysqlPdo.ini
mysql:host=localhost;dbname=woodk
pdoDemo.php
<?php try{ //$pdo = new PDO("mysql:host=localhost;dbname=woodk", "root", "root"); $pdo = new PDO("uri:mysqlPdo.ini", "root", "root"); //$pdo = new PDO("uri:mysqlPdo.ini", "root", "root", $arr); //$pdo->setAttribute(PDO::ATTR_AUTOCOMMIT, 0); }catch(PDOException $e){ die("数据库连接失败".$e->getMessage()); } //echo $pdo->getAttribute(PDO::ATTR_AUTOCOMMIT); print_r($pdo);
配置 php.ini 初始化: (略)
PDO 对象应用
本课时讲解 PDO 中常用方法 query、exec、fetchAll。
数据查询query()和getchAll()使用:
pdoTest.php:
1 <?php 2 3 //1.连接数据库 4 try{ 5 $pdo = new PDO("mysql:host=localhost;dbname=woodk", "root", "root"); 6 $pdo->query('set names utf8'); //字符集 7 }catch(PDOException $e){ 8 die("数据库连接失败".$e->getMessage()); 9 } 10 11 //2.执行query(查询)返回一个预处理对象 12 $sql= "SELECT * FROM stu"; 13 $stmt = $pdo->query($sql); 14 //$list = $stmt->fetchAll(); 15 $list = $stmt->fetchAll(PDO::FETCH_ASSOC); //处理成关联数组 16 17 //3.解析数据(把所有数据都解析) 18 foreach($list as $val){ 19 echo $val['id']."-----".$val['name'].'<br>'; 20 } 21 22 //4.释放资源 23 $stmt = null; 24 $pdo = null; 25 26 ?>
pdoTest2.php: 快捷的查询方式和增删改操作
1 <?php 2 3 //1.连接数据库 4 try{ 5 $pdo = new PDO("mysql:host=localhost;dbname=woodk", "root", "root"); 6 $pdo->query('set names utf8'); //字符集 7 }catch(PDOException $e){ 8 die("数据库连接失败".$e->getMessage()); 9 } 10 11 //2.执行query(查询) 这是一种快捷操作方式 12 $sql= "SELECT * FROM stu"; 13 foreach($pdo->query($sql) as $val){ 14 echo $val['id']."-----".$val['name'].'<br>'; 15 } 16 17 //插入数据 18 //$sql = "INSERT INTO stu VALUES(null, '王五', '15')"; 19 //删除数据 20 //$sql = "DELETE FROM stu WHERE id = 3"; 21 //更新数据 22 $sql = "UPDATE stu SET name = '老王' WHERE id = 4"; 23 24 $result = $pdo->exec($sql); 25 if($result){ 26 echo '操作成功'; 27 } 28 29 30 31 //4.释放资源 32 $stmt = null; 33 $pdo = null; 34 35 ?>