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 表:iduserNamepassword1John123456
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 官网。
相关文章: