在本教程中,我们展示了如何在 PHP PDO 中对数据库进行编程。
PHP PDO
PHP 数据对象(PDO)定义了用于访问 PHP 中数据库的轻量级接口。 它提供了一个数据访问抽象层,用于在 PHP 中使用数据库。 它定义了用于各种数据库系统的一致 API。
PHP PDO 类
PDO
表示 PHP 与数据库服务器之间的连接。 PDOStatement
代表准备好的语句,在执行该语句后,代表关联的结果集。 PDOException
表示 PDO 引发的错误。
MySQL 数据库
在本教程中,我们将使用 MySQL 数据库。
countries_mysql.sql
这些 SQL 命令创建一个countries
表。
PHP PDO 查询
PDO query()
在单个函数调用中执行一条 SQL 语句,返回该语句返回的结果集(如果有)。
version.php
该示例返回 MySQL 的版本。
这些变量用于创建到数据库的连接字符串。 dsn
是数据源名称,其中包含连接到数据库所需的信息。
创建一个新的PDO
对象,我们向构造函数传递数据源名称以及用户名和密码。 PDO
类表示 PHP 与数据库服务器之间的连接。
query()
方法在单个函数调用中执行一条 SQL 语句,它返回结果集。
PDO 语句的fetch()
方法从结果集中获取下一行,在我们的例子中,它是 MySQL 的一个版本。
$version
是一个数组,我们得到它的第一价值。
PHP PDO 执行
PDO exec()
执行一条 SQL 语句并返回受影响的行数。
affected_rows.php
该代码示例将删除三行,它打印受影响的行数。
在此 SQL 语句中,我们删除 ID 为 1、2 和 3 的行,已删除的行数存储在$nrows
变量中。
我们打印已删除的行数。
PHP PDO 提取样式
提取样式参数控制如何将下一行返回给调用方。 例如,PDO::FETCH_ASSOC
返回按列名索引的数组,PDO::FETCH_NUM
返回按列号索引的数组,PDO::FETCH_BOTH
返回按列名和索引列号索引的数组。 默认的获取样式为PDO::FETCH_BOTH
。
fetch_style_num.php
在此代码示例中,我们在索引数组中获取数据。
我们从countries
表中选择所有数据。
我们将PDO:FETCH_NUM
样式传递给fetchAll()
方法。
我们遍历$rows
数组并打印字段,通过数组索引访问这些字段。
fetch_style_assoc.php
在此示例中,我们以关联数组的形式获取数据。
在fetchAll()
方法中,我们使用PDO::FETCH_ASSOC
样式。
PHP PDO 参数绑定
SQL 语句通常是动态构建的。 用户提供一些输入,并且此输入已内置到语句中。 每当我们处理来自用户的输入时,我们都必须谨慎。 它具有一些严重的安全隐患。 动态构建 SQL 语句的推荐方法是使用参数绑定。
PDO 包含bindParam()
和bindValue()
方法来创建参数化查询。
PDO 允许将数据绑定到问号或命名的占位符。
parameterized_query.php
在示例中,我们使用bindValue()
创建参数化查询,我们使用问号占位符。
此输入来自用户。
select 语句从表中获取特定行。 我们将带有bindValue()
的值绑定到问号占位符。
在第二种情况下,我们使用bindParam()
。
parameterized_query2.php
该示例选择并打印特定的行。
这次我们使用命名占位符(:id
)和bindParam()
。
PHP PDO 最后插入的行 ID
PDO lastInsertId()
方法返回最后插入的行 ID。
create_table.php
在示例中,我们创建一个新表。 创建表后,我们用lastInsertId()
找出最后插入的 ID。
PHP PDO 事务
事务是针对一个或多个数据库中数据的数据库操作的基本单位。 事务中所有 SQL 语句的影响可以全部提交给数据库,也可以全部回滚。
PDO beginTransaction()
启动新事务。 PDO commit()
提交事务。 PDO rollback()
将回滚事务。
transaction.php
在示例中,我们将两个新的国家/地区添加到数据库表中。 将 insert 语句放置在事务中:要么执行两个插入,要么都不执行。
如果发生异常,我们回滚事务:没有数据写入数据库。 我们抛出异常,以便异常处理继续按常规方式进行。
PHP PDO 获取元数据
元数据是有关数据库中数据的信息。 元数据包含有关我们存储数据的表和列的信息。 SQL 语句影响的行数是元数据。 结果集中返回的行数和列数也是元数据。
column_count.php
在示例中,我们使用columnCount()
方法打印结果集中的列数。
getAttribute()
方法检索数据库连接属性。
connection_attributes.php
在示例中,我们使用getAttribute()
方法获取驱动程序名称,服务器版本和自动提交模式。
在以下示例中,我们打印列元数据。 列元数据通过getColumnMeta()
方法检索。
column_metadata.php
在示例中,我们获取列表,名称,长度和标志。
您可能也对以下相关教程感兴趣: PHP SQLite3 教程, CakePHP 数据库教程, Doctrine QueryBuilder 教程, PHP 文件系统 , Twig 教程, PHP Faker 教程, PHP 教程。