设为首页 收藏本站
查看: 535|回复: 0

[经验分享] PHP PDO介绍与应用

[复制链接]

尚未签到

发表于 2017-3-22 10:31:48 | 显示全部楼层 |阅读模式
  PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。
  在windows环境下PHP5.1以上版本中:
  PDO和主要数据库的驱动同PHP一起作为扩展发布,要激活它们只需简单的编辑php.ini文件:  extension=php_pdo.dll  然后,选择针对特定数据库的DLL文件使用 dl() 在运行时加载,或者在php.ini文件中 php_pdo.dll 行后启用它们,如:  extension=php_pdo.dll  extension=php_pdo_firebird.dll  extension=php_pdo_informix.dll  extension=php_pdo_mssql.dll  extension=php_pdo_mysql.dll  extension=php_pdo_oci.dll  extension=php_pdo_oci8.dll  extension=php_pdo_odbc.dll  extension=php_pdo_pgsql.dll  extension=php_pdo_sqlite.dll  这些DLL文件应当存在于系统的 extension_dir 目录里。  注意 PDO_INFORMIX 只能作为一个PECL扩展使用。
  类结构:
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)
arrayinTransaction( void)
stringlastInsertId([ string$name = NULL] )
PDOStatementprepare( string$statement[, array$driver_options = array()] )
PDOStatementquery( string$statement)
stringquote( string$string[, int$parameter_type = PDO::PARAM_STR] )
boolrollBack( void)
boolsetAttribute( int$attribute, mixed$value)

}


结构说明

  • PDO::beginTransaction— Initiates a transaction(初始事务)
  • PDO::commit— Commits a transaction(提交事务)
  • PDO::__construct— Creates a PDO instance representing a connection to a database(创建一个pdo与数据库的实例链接)
  • PDO::errorCode— Fetch the SQLSTATE associated with the last operation on the database handle
  • PDO::errorInfo— Fetch extended error information associated with the last operation on the database handle
  • PDO::exec— Execute an SQL statement and return the number of affected rows(执行sql并返回影响的sql条数)
  • PDO::getAttribute— Retrieve a database connection attribute
  • PDO::getAvailableDrivers— Return an array of available PDO drivers
  • PDO::inTransaction— Checks if inside a transaction
  • PDO::lastInsertId— Returns the ID of the last inserted row or sequence value
  • PDO::prepare— Prepares a statement for execution and returns a statement object
  • PDO::query— Executes an SQL statement, returning a result set as a PDOStatement object
  • PDO::quote— Quotes a string for use in a query.
  • PDO::rollBack— Rolls back a transaction(回滚)
  • PDO::setAttribute— Set an attribute

实例演示
Here is an singleton PDO example:###### config.ini ######db_driver=mysqldb_user=rootdb_password=924892xp[dsn]host=localhostport=3306dbname=localhost[db_options]PDO::MYSQL_ATTR_INIT_COMMAND=set names utf8[db_attributes]ATTR_ERRMODE=ERRMODE_EXCEPTION############class Database {private static $link = null ;private static function getLink ( ) {if ( self :: $link ) {return self :: $link ;}$ini = _BASE_DIR . "config.ini" ;$parse = parse_ini_file ( $ini , true ) ;$driver = $parse [ "db_driver" ] ;$dsn = " ${ driver } :" ;$user = $parse [ "db_user" ] ;$password = $parse [ "db_password" ] ;$options = $parse [ "db_options" ] ;$attributes = $parse [ "db_attributes" ] ;foreach ( $parse [ "dsn" ] as $k => $v ) {$dsn .= " ${ k } = ${ v } ;" ;}self :: $link = new PDO ( $dsn , $user , $password , $options ) ;foreach ( $attributes as $k => $v ) {self :: $link -> setAttribute ( constant ( "PDO:: { $k } " ), constant ( "PDO:: { $v } " ) ) ;}return self :: $link ;}public static function __callStatic ( $name , $args ) {$callback = array ( self :: getLink ( ), $name ) ;return call_user_func_array ( $callback , $args ) ;}} ?>// examples$stmt = Database :: prepare ( "SELECT 'something' ;" ) ;$stmt -> execute ( ) ;var_dump ( $stmt -> fetchAll ( ) ) ;$stmt -> closeCursor ( ) ;?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-353490-1-1.html 上篇帖子: 关于PHP重定向 下篇帖子: php基础学习-- stristr() 函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表