思考:既然PDO这么强大,可以支持很多数据库,为什么一开始不直接使用PDO呢?
引入:PDO是一种纯面向对象方式实现的扩展,需要在大家掌握了php面向对象之后,才方便学习和理解
不过在实际开发中,现在基本都是通过PDO来实现数据库操作
定义:PDO是php Data Object的简称,代表PHP数据对象,是一种纯面向对象的方式实现的数据库操作扩展。
1.PDO类虽然提供了很多方法,但是常用的方法有以下几个
PDO::__construct() :实例化PDO对象的构造函数
PDO::exec() :执行一个写操作sql指令,返回受影响的行数
PDO::query():执行一个读操作sql指令,返回一个PDOStatment类对象,(后者进行数据解析操作)
PDO::errorCode()和PDO::errorInfo()获取上次错误的信息(错误码和错误描述数据)
2.PDO实例化对象:来利用构造方法__construct(string $dsn,string $user,string,$pass[,array $drivers])实现,构造方法由4个参数组成,
其中一般前三个为必须参数,第四个为可选。
$dsn:一个数据库基本信息字符串,包含数据库产品,主机地址等
<?php //尝试连接mysql数据库PDO操作 //方案1 $pdo=new PDO(‘mysql:host=localhost;port=3306;dbname=senven‘,‘root‘,‘root‘); var_dump($pdo); //方案2 $dsn=‘mysql:host=localhost;port=3306;dbname=senven‘; $user=‘root‘; $pass=‘root‘; $pdo1=new PDO($dsn,$user,$pass); var_dump($pdo1); ?>
3.得到对象后,我们就可以利用PDO对象调用相关方法执行sql操作,exec执行数据返回SQL,query执行由结果返回sql
<?php $dsn=‘mysql:host=localhost;port=3306;dbname=senven‘; $user=‘root‘; $pass=‘root‘; $pdo=new PDO($dsn,$user,$pass); //写数据 // $sql=‘delete from hylist where id=1‘; // $result=$pdo->exec($sql); //删除成功 // var_dump($result); //返回1 删除成功 //读数据 $sql=‘select * from hylist‘; $s=$pdo->query($sql); var_dump($s); //成功返回PDOStatements对象 否则返回false ?>
4.如果PDO对象在执行sql时出现错误,即sql本身有错误,那么可以通过PDO类蹄冻的errorCode()和errorInfo()
<?php $dsn=‘mysql:host=localhost;port=3306;dbname=senven‘; $user=‘root‘; $pass=‘root‘; $pdo=new PDO($dsn,$user,$pass); $sql=‘delete from hyist where id=1000‘; $row=$pdo->exec($sql); //错误判断,exec方法执行结果成功也存在返回0的情况,错误会返回false,所以要判定是否sql错误,需要判定结果为false //语法错误的时候会报错,如果id=1000在数据库中没有,不是sql语法错误 if($row===false){ echo ‘错误代码‘.$pdo->errorCode().‘<br>‘; echo ‘错误原因‘.$pdo->errorInfo()[2]; //errorInfo()返回数组,2下标代表错误具体信息 exit; //错误不需要继续执行程序 } //读取操作,也可以这么判定,query()成功返回PDOStatements对象,否则返回false ?>
总结:
1.PDO时一种外部提供的扩展,可以通过操作手册来协助学习使用
2.PDO类主要用来实现数据库的初始化操作和Sql指令的执行
3.sql执行的结果不论是写操作还是读操作都是可能出错的,因此需要进行错误处理
原文:https://www.cnblogs.com/xiaowie/p/12498029.html