美文网首页Php
PHP操作数据库——PDO

PHP操作数据库——PDO

作者: CommandM | 来源:发表于2016-09-17 01:09 被阅读370次

    本文简单介绍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() //有好多女的,以对象方式全取出来并进一步操作
    

    补充

    相关文章

      网友评论

        本文标题:PHP操作数据库——PDO

        本文链接:https://www.haomeiwen.com/subject/btpiettx.html