PDO 是 PHP 中用来访问数据库的一个轻量型的接口,相比起 Mysqlli 来说,PDO 可支持更多种的数据库,而 Mysqli 只支持 Mysql。通过 PDO 可实现使用同样的方法来访问不同的数据库,如果您建站初期使用的是 Mysql,但后期需要更换数据库的话,只需要修改一些配置信息,不用修改类和方法就可以实现更换数据库。

连接数据库

PHP代码:

<?php

const DATABASE_TYPE = 'mysql';  //  数据库类型
const DATABASE_SERVER = '127.0.0.1';  //  服务器地址
const DATABASE_NAME = 'bbs';  //  要连接的数据库名称
const USER_NAME = 'root';  //  数据库用户名
const PASSWORD = 'root';  //  数据库密码
const DSN = DATABASE_TYPE . ':host=' . DATABASE_SERVER . ';dbname=' . DATABASE_NAME;  //  数据源

try {
    $pdo = new PDO(DSN, USER_NAME,PASSWORD);  //  创建PDO对象
}catch (PDOexception $e) {
    echo $e->getMessage();  //  输出异常信息
}

上面的 DSN 常量是一个包含了数据库种类、数据库主机名、数据库名称 的字符串,下面是不使用拼接的写法:

const DSN = 'mysql:host=127.0.0.1;dbname=bbs';

除了上面的写法外,也还有其他的写法,在 PHP 的官网教程中有说明,不过感觉这种写法用的要多一些。

PDO() 对象 PDO 是操作数据库必须的一个对象,它包含了一系列的操作数据库的方法,下面是参数说明:

参数类型说明
dsnstring包含了 数据库种类、数据库主机名、数据库名称的数据源
userNamestring数据库用户名
passwordstring数据库密码

插入 & 删除 & 修改

PHP代码:

sql = "INSERT INTO user (userName, password) VALUES ('Charlie', '123456')";  //  SQL语句
$result = $pdo->exec($sql);  //  执行插入
echo $result;  //  输出受影响的行数

exec() 方法 exec 执行 SQL 语句,返回受影响的行数。

参数类型说明
sqlstring要执行的SQL语句

exec 方法 还可以用于修改和删除数据,代码如下:

PHP代码:

//  把Charlie的密码修改为000000
$sql = "UPDATE user SET password = '000000' WHERE userName = 'Charlie'";  //  SQL语句
$result = $pdo->exec($sql);  //  执行修改
echo $result;  //  输出受影响的行数

删除和修改都差不多,只是 SQL 语句不一样,这里就不写了。

查询

下面是查询的 PHP 代码:

PHP代码:

//  查询出user表的所有数据
$sql = "SELECT * FROM user";  //  SQL语句
$data = $pdo->query($sql);  //  执行查询语句
if ($data->rowCount() > 0) {  //  判断查询到的行数是否大于0
    $dataArr = $data->fetchAll();  //  把所有查询到的数据转换为数组
    print_r($dataArr);  //  输出数组
}else {
    echo '未能查询到数据!';
}

查询到的数据:

Array
(
    [0] => Array
        (
            [id] => 1
            [0] => 1
            [userName] => John
            [1] => John
            [password] => 123456
            [2] => 123456
        )

    [1] => Array
        (
            [id] => 2
            [0] => 2
            [userName] => George
            [1] => George
            [password] => 123456
            [2] => 123456
        )

    [2] => Array
        (
            [id] => 3
            [0] => 3
            [userName] => Charlie
            [1] => Charlie
            [password] => 000000
            [2] => 000000
        )

)

user 表:

iduserNamepassword
1John123456
2George123456
3Charlie000000

query() 方法 query 执行 SQL 语句,返回 PDOStatement 对象,可以理解为结果集。下面是 query 的参数:

参数类型说明
sqlstring要执行的SQL语句

PDOStatement 对象中又有一些方法:

rowCount() 方法 获取返回的行数,这个方法在一些数据库可能用不了,但在 Mysql 可以用。

fetchAll() 方法 返回一个包含结果集中所有行的数组,也就是把查询到的所有行转换为数组。

fetch() 方法 从结果集中获取下一行,如果只查询一行数据的话,就比较适合用这个方法。

下面是通过 fetch 方法 获取数据:

PHP代码:

//  查询出user表的所有数据
$sql = "SELECT * FROM user";  //  SQL语句
$data = $pdo->query($sql);  //  执行查询语句

$dataArr = $data->fetch();  //  获取一行
print_r($dataArr);  //  输出数组

查询结果:

Array
(
    [id] => 1
    [0] => 1
    [userName] => John
    [1] => John
    [password] => 123456
    [2] => 123456
)

通过 fetch 方法 无论查询到多少行都只会获取一行。

以上就是 PHP PDO 最基本的增、删、改、查,如果要查看 PDO 的所有内容可以访问 PHP 官网。

相关文章: