PHP操作数据库——PDO

本文简单介绍PDO对象下各个函数的使用方法。

事先声明:本文不详尽,见具体请前往PHP手册参阅。

安装PDO

PDO其实就是一个PHP的模块。

Windows

在Windows下面很简单
打开PHP所在文件夹下的php.ini配置文件
先改好PHP的拓展目录,也就是extension的目录(可以通过Search跳转),一半理论上把Windows对应那行前面的“;”去掉就好了。
在后文里,把extension=php_pdo.dllextension=php_pdo_XXX.dll(XXX表示你所用的数据库类型)前面的“;”去掉

Linux

至于Linux(测试环境Ubuntu16.04,PHP7),使用APT安装的情况下它默认是开好了PDO的,不用再去编译。
测试环境Ubuntu16.04,PHP7:首先我们应该知道在linux下方便地开启模块是用phpenmod命令。
然后我们在装好php之后就可以在bash里phpenmod pdo来先打开PDO扩展。
然后sudo apt install php7.0-mysql(版本注意自行更改)。
这样它会将编译好的pdo_mysql模块文件放到你的mod_avaliable目录,现在就可以通过phpenmod pdo_mysql来开启PDO中mysql的驱动。
编译安装方法这里不细说。

使用PDO

正如我们所知,PDO是OO(面向对象)的,所以在使用它前我们需要实例化一个PDO对象。

1. 实例化

命令

$myPDO = new PDO($dsn[, $username[, $password[, $driver_options]]])
注:“[”与“]”中内容表示可空。

解析

我们可以看见一共有四个参数
$dsn 就是DSN,关于DSN是啥不知道的点我。所以,举个栗子我们连接MySQL数据库就可以这样在实例化之前这样写$dsn = "mysql:host=localhost;dbname=test";
$username 就是你对应的数据库的用户名。
$password 就是用户名对应的密码。
最后是$driver_options,需要说明的是,前三个都是字符串形式,而它则是数组形式,一般不是特殊需求不用写它,想了解的自己去看手册【毕竟这里只是简单介绍对吧】。

2. 对象函数

PDO实例化后就可以通过这个实例化对象来进行数据库sql操作。
常用的有如下函数

函数 描述
PDO::exec 执行一条 SQL 语句,并返回受影响的行数
PDO::query 执行一条SQL语句,返回一个PDOStatement对象
PDO::prepare 准备要执行的SQL语句,返回一个PDOStatement对象
PDO::quote 返回一个添加引号的字符串,用于SQl语句中
PDO::lastInsertId 返回最后插入行的ID或序列值
PDO::setAttribute 设置属性

可以看到exec和query非常相似,由于返回内容的不同,我们一般使用exec进行增删改操作,使用query进行查操作。

在通过query得到的PDOStatement对象上我们可以进行进一步操作(往往是数据的获取,即查操作)。

函数 描述
PDOStatement::execute 执行一条预处理语句(prepare)
PDOStatement::rowCount() 返回受上一个 SQL 语句影响的行数
PDOStatement::fetch 从结果集中获取下一行
PDOStatement::fetchAll 返回一个包含结果集中所有行的数组
PDOStatement::fetchColumn 从结果集中的下一行返回单独的一列
PDOStatement::fetchObject 获取下一行并作为一个对象返回
PDOStatement::bindParam 绑定一个参数到指定变量名
PDOStatement::bindValue 把一个值绑定到一个参数

具体用法详见手册。

举例

这里我们通过增删改查的例子来进行学习。

一般我们增直接就是使用exec函数,通过返回的影响的行数判断增操作是否成功完成。

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "INSERT INTO user  ('name', 'password', 'phone' ) VALUES ('用户1', '123456', '10086'),('用户2', '654321', '10010');";
$result = myPDOExample::exec($sql);

例子表示向user表中插入了两条数据
不知道怎么SQL中Insert插入数据的看这里

同样也是exec

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "DELETE FROM fruit WHERE color = 'red' ;";
$result = myPDOExample::exec($sql);

例子表示删除fruit表中所有color的值为red的数据

同样也是exec

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ;";
$result = myPDOExample::exec($sql);

表示把所有的LastName值为Wilson的行中的FirstName值改为Fred

查是重头戏。
我们首先通过如上的步骤进行查的准备

$myPDOExample = new PDO("mysql:host=localhost;dbname=test","root","root");
$sql = "SELECT * FROM user WHERE gender='female' ;";

这条SQL表示从user表里取出所有性别gender是女female的行的所有数据(即*)。
我们通过query先对它进行查询操作,并获得一个PDOStatement对象。

$result = myPDOExample::query($sql);

这里需要根据下一步对数据的操作来选取$result的函数。

$dataString = $resylt::fetch() //知道只有一个女的,所以只需要取一行。
$dataArray = $resylt::fetchAll() //有好多女的,以数组方式全取出来并直接表达
$dataObject = $resylt::fetchObject() //有好多女的,以对象方式全取出来并进一步操作

补充

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 在刚刚接触PHP时,曾遇到过这样一个坑,就是在PHP7.0版本中无法使用mysql连接数据库,当时只好降级PHP版...
    kangyiii阅读 1,977评论 0 1
  • Php:脚本语言,网站建设,服务器端运行 PHP定义:一种服务器端的HTML脚本/编程语言,是一种简单的、面向对象...
    廖马儿阅读 2,084评论 2 38
  • pdo类PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口,与mysql和mysqli的函数库相比,...
    桖辶殇阅读 826评论 0 0
  • php与mysql的连接有三种API接口,分别是:PHP的MySQL扩展 、PHP的mysqli扩展 、PHP数据...
    followyounger1阅读 2,774评论 1 5
  • 今天总公司的营销总监来郑州培训,主题是销售,那到底什么是销售,怎么销售? 回顾自己过去的经历,上过的各种课程,体悟...
    小酒窝天使阅读 117评论 0 0