Php Data Object数据库抽象层(PDO)

2025-11-12 03:25:48

1、1.什么是PDO?

Php Data Object  PHP数据对象,他是数据库抽象层的一种.

2.什么是数据库抽象层?

马云,  淘宝的最大股东. PHP+mysql架构~

马云作为一个暴发户而言.  MYSQL太贱掉价~不想用了,该数据库,改成Oralce数据库.

需要做三件事情:

1.数据库迁移

2.修改程序中所有链接MYSQL的代码,必须修改为Oracle.

3.调试程序.

作没钱了...    再换数据库...NoSQL类型的数据库,redis...

需要做三件事情:

1.数据库迁移

2.修改程序中所有链接MYSQL的代码,必须修改为Oracle.

3.调试程序.

马云又想尝试一下新的感觉? 再换一个数据库DB2数据库..

需要做三件事情:

1.数据库迁移

2.修改程序中所有链接MYSQL的代码,必须修改为Oracle.

3.调试程序.

Php Data Object数据库抽象层(PDO)

Php Data Object数据库抽象层(PDO)

2、为了解决网站迁移问题和同一个站点同时使用多种数据的问题的,我们发明了一个新的东西:数据库抽象层:

Php Data Object数据库抽象层(PDO)

3、目前市面上大部分的数据库使用数据库抽象层都可以链接并且操作.

PDO不是数据库抽象层(概念不相等),pdo只是数据要库抽象层的一种.

为啥子要学习PDO捏?数据库抽象层有好多种啊.....

1.PDO是以扩展模块的形式直接打入PHP系统的,模块化方式效率较高.

2.官方推荐使用PDO作用程序的抽象层.

3.PDO在未来的版本中会默认开启.

4.Made In China  中国人开发的模块~.

1.开启PDO支持?

1.开启PDO的开关,配置文件中 extension=php_pdo.dll 去掉前面的分号.  高版本没有该选项(默认开启了~)

2.开启PDO支持的数据库模块  extension=php_pdo_mysql.dll 去掉前面的分号(需要操作哪些数据库就开哪些)

3.如果以上操作无效?

A没有重启服务.

B对应的扩展DLL文件不存在....

去官方网站下载一个同版本的扩展dll文件,放在php的ext文件夹之下

C程序损坏.(apache损坏或者PHP损坏)

4、pdo的类:

PDO {

__construct( string $dsn [, string $username [, string $password [, array $driver_options ]]] )  构造方法

boolbeginTransaction( void )  开启事务

boolcommit( void )  提交操作

mixederrorCode( void ) 错误编号

arrayerrorInfo( void )  错误信息

intexec( string $statement )  执行增删改操作

mixedgetAttribute( int $attribute ) 获取当前属性设置

arraygetAvailableDrivers( void )   获取当前PDO支持的数据库

boolinTransaction( void ) 检测是否处于事务当中

stringlastInsertId([ string $name = NULL ] )  获取最后插入的自增ID

PDOStatementprepare( string $statement [, array $driver_options = array() ] )  准备预处理对象

PDOStatementquery( string $statement ) 执行查询操作

stringquote( string $string [, int $parameter_type = PDO::PARAM_STR ] ) pdo的字符转义

boolrollBack( void )  事务回滚

boolsetAttribute( int $attribute , mixed $value )  设置相关属性

}

PDO预处理类

PDOStatement implements Traversable {

/* 属性 */

readonly string$queryString;

/* 方法 */

boolbindColumn( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )

boolbindParam( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )

boolbindValue( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] )

boolcloseCursor( void )

intcolumnCount( void )

booldebugDumpParams( void )

stringerrorCode( void )

arrayerrorInfo( void )

boolexecute([ array $input_parameters ] )

mixedfetch([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )

arrayfetchAll([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

stringfetchColumn([ int $column_number = 0 ] )

mixedfetchObject([ string $class_name = "stdClass" [, array $ctor_args ]] )

mixedgetAttribute( int $attribute )

arraygetColumnMeta( int $column )

boolnextRowset( void )

introwCount( void )

boolsetAttribute( int $attribute , mixed $value )

boolsetFetchMode( int $mode )

}

 

PDO异常处理类

PDOException extends RuntimeException {

/* 属性 */

publicarray$errorInfo;

protectedstring$message;

protectedstring$code;

/* 继承的方法 */

finalpublicstringException::getMessage( void )

finalpublicExceptionException::getPrevious( void )

finalpublicintException::getCode( void )

finalpublicstringException::getFile( void )

finalpublicintException::getLine( void )

finalpublicarrayException::getTrace( void )

finalpublicstringException::getTraceAsString( void )

publicstringException::__toString( void )

finalprivatevoidException::__clone( void )

}

5、pdo可以获取的相关属性

·         PDO::ATTR_AUTOCOMMIT     检测PDO的自动提交功能是否开启 1开启 0关闭

·         PDO::ATTR_CASE   大小写转换设置

·         PDO::ATTR_CLIENT_VERSION   当前客户端的版本

·         PDO::ATTR_CONNECTION_STATUS  检测当 前的链接状态

·         PDO::ATTR_DRIVER_NAME   当前数据库的名称

·         PDO::ATTR_ERRMODE      当前的错误处理方式

·         PDO::ATTR_ORACLE_NULLS  当前的oracle的空值转换设置

·         PDO::ATTR_PERSISTENT     检测当前链接是否是持久链接

·         PDO::ATTR_PREFETCH     预先获取要处理的数据的大小

·         PDO::ATTR_SERVER_INFO   服务器信息

·         PDO::ATTR_SERVER_VERSION  服务器版本

·         PDO::ATTR_TIMEOUT   设置当前的数据处理超时时间

 

pdo可以设置的相关属性:

PDO::ATTR_CASE  设置PDO的大小写转换

PDO::CASE_LOWER   全转化为小写字母

PDO::CASE_NATURAL: 保持原有状态

PDO::CASE_UPPER: 全部转化为大写

PDO::ATTR_ERRMODE 设置当前PDO的错误处理模式

PDO::ERRMODE_SILENT: 寂静模式(默认)

该模式需要配合errorCode和errorInfo才能显示错误.

PDO::ERRMODE_WARNING: 系统语法提示

该模式直接使用系统提供的错误处理模式warnning..

PDO::ERRMODE_EXCEPTION:异常处理模式

利用try..catch语法自动抛出错误处理..

PDO::ATTR_ORACLE_NULLS  设置当前的空值转换方式

PDO::NULL_NATURAL  不转换,保持原有状态

PDO::NULL_EMPTY_STRING:空字符串被转换为空值  oracle->mysql

PDO::NULL_TO_STRING: 空值被转换为空字符串  mysql->oralce

PDO::ATTR_TIMEOUT  设置超时时间  mysql不支持

PDO::ATTR_AUTOCOMMIT  设置当前是否使用自动提交功能

false 关闭自动提交

true  开启自动提交  默认

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:117
  • 阅读量:184
  • 阅读量:72
  • 阅读量:26
  • 阅读量:114
  • 猜你喜欢