首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PHP-PDO 扩展类库简介

PDO 简介

一个用于访问数据库的轻量级接口,它提供了数据库抽象层,让我们的程序可以同时支持多种数据库,但是它本身并不提供任何数据库的功能,需要搭配对应的数据库驱动来使用。

有点绕,下面给大家拆解一下这段话。

干嘛的?

用来读写数据库的。

和mysqli 有什么区别?

mysqli 只能用于MYSQL数据库,而PDO 可以支持很多类型的数据库,比如 sql server、oracle等。

支持哪些数据库?

无限多,只要你有对应的“数据库驱动”。换句话说,至少你得有一个“数据库驱动”,当然,PHP自带就好几种了。

什么是数据库驱动?

与PDO 一样,都是PHP扩展。

在WINDOWS的系统中,你可以在这个目录下找到他们 (),如果是 Linux 的操作系统,在编译安装PHP的时候,通过可选参数来支持各种数据库。

何谓数据库抽象层?

简单来说就是“中介”,想象买房卖房的中介吧。

如果你用 MySQLi 扩展,是这样的:PHP -> MySQLi

而PDO 是这样的:PHP -> PDO -> 数据库驱动(MySQLi)

即使你更换了数据库驱动,也只影响PDO,PHP的代码则毫无影响。

真的可以无缝切换数据库?

实际上并不能,每个数据库的SQL语法稍有差别,如果你想无缝切换,大概还需要这样:

避免使用非标准SQL

为每个数据库驱动再封装一个抽象层

其实,绝大多数情况下我们都不需要同时支持多个数据库,对吗?

获得 PDO

从 PHP 5.1 版本开始,默认就附带了PDO,所以多数情况下,你安装了PHP,就自然有了PDO。

常见的数据库驱动,也都随之附带了。

支持哪些数据库?

至少已经有了这些驱动,常见的数据库基本都OK吧。

PDO_CUBRID Cubrid

PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase

PDO_FIREBIRD Firebird/Interbase 6

PDO_IBM IBM DB2

PDO_INFORMIX IBM Informix Dynamic Server

PDO_MYSQL MySQL 3.x/4.x/5.x

PDO_OCI Oracle Call Interface

PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 ODBC)

PDO_PGSQL PostgreSQL

PDO_SQLITE SQLite 3 及 SQLite 2

PDO_SQLSRV Microsoft SQL Server / SQL Azure

PDO_4D 4D

为什么我的课程中使用 MySQli

考虑同学的学习成本

虽然在某些入门后的同学看来,PDO很简单啊,这有什么难的?但,其实这是会者不难的问题。

对于初学者而言,PDO 的某些概念,还是不如 Mysqli 来的容易。

PS: 即便是 mysqli,在初学者中也是最难理解的环节。

以后必须用PDO吗?

现在的程序员,入门之后多数都在使用框架。

框架自己封装了模型层,已经不需要你自己去编写连接过程。通过查询构造器,连SQL语句都不用你写了,所以是不是用PDO,你也不太能感觉的到。

PS:有些同学觉得用框架很恐慌,其实完全没必要。编程最重要的是思想,至于基础知识等你进阶以后,分分钟就补回来。

PDO 扩展库基本情况

PDO 类

用来创建和管理数据库连接,以及执行SQL。

PDOStatement 类

它有两个功能, 和 (相当于 mysqli_result 对象)

PDOException 异常类

使用PDO的过程中,发生任何错误都会抛出该错误类型。其中包括了错误信息、代码、所在文件、行数等。

数据库驱动

数据库驱动,并不是“类”,仅仅是说明文档。在PHP手册中可以找到。

描述了每个数据库特有的常量、可配置项、DNS字符串。

基本用法

连接到数据库

注意:必须捕获异常,否则容易暴露数据库账号、密码等信息

执行增删改SQL

执行SELECT查询

使用预处理语句

预处理语句,可避免SQL注入,大量执行相同SQL时(SQL结构不变,值变化),免去编译过程

销毁对象

其他语法

PDO 还能支持事务(根据数据库驱动决定),对于“大对象”还可以以stream的形式处理。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171212B06U9700?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券