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

2024-11-06 06:17:04

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 ] ) 获取最后插入的自增IDPDOStatementprepare( 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->mysqlPDO::NULL_TO_STRING: 空值被转换为空字符串 mysql->oralcePDO::ATTR_TIMEOUT 设置超时时间 mysql不支持PDO::ATTR_AUTOCOMMIT 设置当前是否使用自动提交功能false 关闭自动提交true 开启自动提交 默认

猜你喜欢