• PDO:从 MySQL 中选择行


    在本教程中,我将向您展示如何使用 PHP 的 PDO 对象从 MySQL 数据库中选择行。请注意,本文针对的是正在寻找某种“备忘单”的初学者。

    PS:如果你是“菜鸟”,那么在使用以下任何代码之前,你需要知道如何连接到 MySQL 数据库。如果未连接到数据库,则无法从数据库中选择数据。

    在上一篇教程中,我向您展示了如何使用 PDO 对象将行插入 MySQL 数据库。我还使用了一个非常简单的表结构来帮助说明我的代码示例:

    1. CREATE TABLE IF NOT EXISTS `cars` (
    2. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    3. `make` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
    4. `model` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
    5. PRIMARY KEY (`id`)
    6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

    使用 PDO 对象从 MySQL 中选择行有三种主要方法:

    • 使用PDO::query函数——这适用于不需要外部数据(即来自客户端/用户的数据)的查询。当 SQL 注入不是问题时,您可以使用它。
    • 使用PDOStatement::fetchAll函数——这适用于将返回多行的 SELECT 查询。
    • 使用PDOStatement::fetch函数——这适用于一次只返回一行的 SELECT 查询。

    PDO SELECT 查询。

    在您的 SELECT 查询不易受到 SQL 注入影响的情况下,您可以像这样使用 PDO 查询功能:

    1. //Selecting multiple rows from a MySQL database using the PDO::query function.
    2. $sql = "SELECT `id`, `make`, `model` FROM `cars` ORDER BY make ASC";
    3. foreach($pdo->query($sql, PDO::FETCH_ASSOC) as $row){
    4. echo 'Make: ' . $row['make'] . '
      ';
    5. echo 'Model: ' . $row['model'] . '
      ';
    6. }

    请注意,当使用外部变量时,不应使用此函数!如果您使用来自客户端的变量(例如,表单变量或 GET 变量),那么您应该使用以下方法之一。

    使用 PDO 选择多行。

    如果您希望使用准备好的语句从 MySQL 中选择多行,那么您可以这样做:

    1. //Selecting multiple rows using prepared statements.
    2. $sql = "SELECT `id`, `make`, `model` FROM `cars` WHERE `make` = :make";
    3. //Prepare our SELECT statement.
    4. $statement = $pdo->prepare($sql);
    5. //The make that we are looking for.
    6. $make = 'Nissan';
    7. //Bind our value to the paramater :make.
    8. $statement->bindValue(':make', $make);
    9. //Execute our statement.
    10. $statement->execute();
    11. //Fetch our rows. Array (empty if no rows). False on failure.
    12. $rows = $statement->fetchAll(PDO::FETCH_ASSOC);
    13. //Loop through the $rows array.
    14. foreach($rows as $row){
    15. echo 'Make: ' . $row['make'] . '
      ';
    16. echo 'Model: ' . $row['model'] . '
      ';
    17. }

    上述代码的分步指南:

    1. 我们构建了我们的 SQL SELECT 语句。请注意我们如何创建一个名为:make的占位符/参数。
    2. 我们“准备”了我们的 SELECT 语句。
    3. 变量 $make 是一个字符串,其中包含我们要从汽车表中选择的汽车品牌。
    4. 我们将 $make 变量绑定到我们的:make占位符。
    5. 我们执行了准备好的语句。正是在这个阶段,SQL SELECT 查询才真正运行。
    6. 我们使用 PDOStatement::fetchAll 函数从 PDO 语句中获取选定的表行。我们还提供了一个名为 PDO::FETCH_ASSOC 的可选参数,它告诉函数返回一个关联数组。
    7. 我们遍历我们的数据。

    选择带有 PDO 对象的单行。

    在此示例中,我们将使用准备好的语句从 MySQL 数据库中选择一行:

    1. //Selecting a single row!
    2. $sql = "SELECT `id`, `make`, `model` FROM `cars` WHERE `id` = :id";
    3. //Prepare our SELECT statement.
    4. $statement = $pdo->prepare($sql);
    5. //The Primary Key of the row that we want to select.
    6. $id = 1;
    7. //Bind our value to the paramater :id.
    8. $statement->bindValue(':id', $id);
    9. //Execute our SELECT statement.
    10. $statement->execute();
    11. //Fetch the row.
    12. $row = $statement->fetch(PDO::FETCH_ASSOC);
    13. //If $row is FALSE, then no row was returned.
    14. if($row === false){
    15. echo $id . ' not found!';
    16. } else{
    17. echo 'Found: ' . $row['make'] . ' ' . $row['model'];
    18. }

    如您所见,此代码片段与我们在上面示例中使用的“Fetch All”语句非常相似。但是,这一次,我们不是使用“fetch all”来选择多行,而是使用“fetch”来选择一行。请注意,如果没有找到值,此函数将返回布尔 FALSE 值!

    相关推荐阅读:

  • 相关阅读:
    【Autopsy数字取证篇】Autopsy案例分析报告导出
    【操作系统】进程间的通信——信号量
    你安全吗?丨通过IP地址如何查到实际地址?
    429. N 叉树的层序遍历
    【C++】类的声明 与 类的实现 分开 ② ( 头文件导入多次报错 | 头文件的作用 | 类的声明 | 类的实现 | 代码示例 - 类的使用 )
    为什么选择虚拟展会展览?了解虚拟展会展览的应用领域
    一次搞定33种python机器学习回归算法!超级全!
    Jupyter运行显存爆炸,明明上一个单元格已经运行完毕为什么还是会炸?
    Error: spawn webpack-dev-server EACCES
    PMP测试题
  • 原文地址:https://blog.csdn.net/allway2/article/details/126885204