首页 > 其他 > 详细

PDO类的基本应用

时间:2020-03-15 16:56:03      阅读:61      评论:0      收藏:0      [点我收藏+]

思考:既然PDO这么强大,可以支持很多数据库,为什么一开始不直接使用PDO呢?

引入:PDO是一种纯面向对象方式实现的扩展,需要在大家掌握了php面向对象之后,才方便学习和理解

不过在实际开发中,现在基本都是通过PDO来实现数据库操作

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:一个数据库基本信息字符串,包含数据库产品,主机地址等

  • 驱动名字(数据库产品),使用英文:分割,如mysql:表示使用mysql数据库
  • 驱动选项(主机地址),使用host=具体主机地址,跟在驱动名字之后,如‘mysqli:host=loclhost’。
  • 驱动选项(端口),使用port=端口号,默认为3306可以不写,拼凑在驱动名字后,不区分先后顺序。
    • 如‘mysql:host=localhost;port=3306‘或者‘mysql:port=3306;host=localhost‘,使用分号和其他驱动分开。
  • 驱动选项(数据库名字),使用dbname=数据库名字(可以视线没有)
  • $user:用户名,如果数据库允许匿名用户出现,那么可以没有该参数(只有$dsn)
  • $pass:密码,与用户名一样
  • $drivers:PDO属性设置,是关联数组,利用PDO内部的常量进行设置
<?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执行的结果不论是写操作还是读操作都是可能出错的,因此需要进行错误处理

 

PDO类的基本应用

原文:https://www.cnblogs.com/xiaowie/p/12498029.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!