封装 PDO(写操作)|学习笔记

简介: 快速学习封装 PDO(写操作)

开发者学堂课程【PHP 进阶教程-由浅入深掌握面向对象开发-第三阶段封装 PDO(写操作)】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/713/detail/12746


封装 PDO(写操作)


对外操作需要进行SQL执行:写操作和读操作,因此继续实现

1、增加写SQL操作方法:对外调用

#写操作

//公有方法外部需要传入sql进入

public function my_exec(Sql){

try{

#调用执行:成功返回,错误捕捉

return $this->pdo->exec($sql);

}catch(PDOException Se){

return Sthis->my_exception(Se);

}

}

这条sql有语法错误,需要用异常来进行捕捉。因为pdo的执行会得到一个行数,所以可以把正确的结果直接返回,而如果有错误就捕捉到,捕捉到之后调用自己的方法处理,处理完成之后再把结果告知。

产生错误,给你一个flase,想要看错误就应该进入到

Sthis->error['file']=Se->getFile();

Sthis->error['line']=Se->getLine();

Sthis->error['error']=Se->getMessage();

#返回false,让外部处理

return false;

}

里面去访问属性,查看具体错误信息。此过程上是写操作。上述封装做好后,写操作将变得比较容易,直接调用即可完成,不需要写非常多的代码,关键需要清楚如何捕捉异常,如何调用自己的方法即可。

此地方好像用到的全部是异常捕捉,万一用户想要一种静默模式来处理该如何。所以其实我们的代码是存在问题的。代码并没有考虑太全面,其实说白了就是我想做这个类,我希望用异常处理,是一种写死的写法如果说不想用这种想法,理论上来讲还要做很多判定,每次在可能需要出错的情况下,我们就要判定用户是否设置模式或者选择用户真正模式进行做,可以做3套方法实现或每次进行判定。

#控制属性(增加异常处理模式)

if(!isset($dirvers[PDO:ATTR_ERRMODE]))

$dirvers [PDO:ATTR_ERRMODE]PDO:ERRMODE_EXCEPTION;

#连接认证

try{

#

增加错误抑制符防止意外

$this->pdo @new PDO($type.'host='.$host ';port='.$port.'

dbname='.

$dbname ';charset='.$charset,$user,$pass,$drivers

);

}catch(PDOException $e){

#属性记录错误

/*$this->error['file']$e->getFile();

$this->error['line']$e->getLine();

$this->error['error']=$e->getMessage();

#返回false,让外部处理

return false;*/

#调用异常处理方法实现异常处理

$this->my_exception($e); }

}

异常采用异常模式处理,不是异常采用静默模式处理,警告模式就采用警告模式处理,警告模式和异常模式写就可以不用管。

只有异常跟非异常每次做之前都要做一次判定,比如此地方我要判定,如果确定了模式是异常,就调用异常代码,如果不是就不用异常代码来写。写操作并没有做完,因为写操作可能需要额外对外提供自增长ID

2、完善写操作:增加对外提供自增长id方法

#获取自增长ID

public function my_last_insert_id(){

return Sthis->pdo->lastInsertId();

增加方法获取自增长id

需要注意:

凡是去操作,去调用pdo的时候,其实都是先用属性访问到pdo对象,再去调用下面的方法来实现,但是很明显代码其实有可能出问题,所以捕捉异常。

如何捕捉(因为拿自增长id可能不会得到)拿不到的话可以换一套逻辑比如判定

#获取自增长ID

public function my_last_insert_id(){

#捕捉异常

try{

$id =$this->pdo->lastInsertId();

#主动抛出异常

if(I$id)throw new PDOException('自增长Id不存在!');

#成功

return $id;

}catch(PDOException $e){

return $this->my_exception($e);

如果不存在应该主动抛出异常,拿不到后续代码会出现问题,

提示自增长ID不存在,请检查sql,成功return id 上述代码不执行,抓住错误信息后续代码调用。调用系统写好的方法进行处理。以后要进行处理,只需要统一处理。这样就完成了写操作的受影响行数以及自增长ID的实现。

此代码替换掉前面代码的内容也可以不进行修改。在代码中动用手脚实现最后的效果即可。

相关文章
|
6月前
|
PHP
PHP 接口和继承的异同?
【7月更文挑战第2天】PHP 接口和继承的异同?
35 0
|
PHP 开发者
封装 PDO(异常封装)|学习笔记
快速学习封装 PDO(异常封装)
封装 PDO(异常封装)|学习笔记
|
SQL PHP 开发者
封装 PDO(读操作+测试)|学习笔记
快速学习封装 PDO(读操作+测试)
封装 PDO(读操作+测试)|学习笔记
|
SQL 关系型数据库 MySQL
PDO 写操作|学习笔记
快速学习 PDO 写操作,利用PDO类完成一个完整的写操作实现,实现数据库的操作。
PDO 写操作|学习笔记
|
SQL 安全 关系型数据库
PDO 类基本应用|学习笔记
快速学习 PDO 类基本应用
PDO 类基本应用|学习笔记
|
关系型数据库 MySQL PHP
PDO 扩展|学习笔记
快速学习 PDO 扩展,掌握 PDO 扩展的加载
PDO 扩展|学习笔记
|
SQL 安全 关系型数据库
PDO 读操作|学习笔记
快速学习 PDO 读操作
PDO 读操作|学习笔记
|
SQL 关系型数据库 MySQL
PDO 错误机制|学习笔记
快速学习 PDO 错误机制
PDO 错误机制|学习笔记
|
PHP 开发者
封装 PDO(小结)|学习笔记
快速学习封装 PDO(小结)
|
SQL PHP 数据库
封装 PDO(封装说明)|学习笔记
快速学习封装 PDO(封装说明)