迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > PHP >

PHP 使用 PDO 获取 MySQL 结果

作者:迹忆客 最近更新:2023/03/29 浏览次数:

PHP PDO 允许你通过统一的界面使用多个数据库。它简化了常规数据库操作,例如结果获取。

本教程将解释如何获取从 PDO 语句返回的多个结果。你将在 while 循环中使用 PDOStatement.fetchAll、数组迭代和 fetch() 方法。


设置数据库

对于本教程,你需要一个 MySQL 数据库来学习。下载并安装 XAMPP 服务器。启动 XAMPP 控制面板并登录到 MySQL shell。

# This login command assumes that the
# password is empty and the user is "root"
mysql -u root -p

使用以下 SQL 查询创建一个名为 fruit_db 的数据库。

CREATE database fruit_db;

输出:

Query OK, 1 row affected (0.001 sec)

要创建你可以使用的示例数据,请在 fruit_db 数据库上执行以下 SQL:

CREATE TABLE fruit
(id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(20) NOT NULL,
 color VARCHAR(20) NOT NULL,
 PRIMARY KEY (id))
 ENGINE = InnoDB;

输出:

Query OK, 0 rows affected (0.028 sec)

使用以下内容确认表存在:

DESC fruit;

输出:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | NO   |     | NULL    |                |
| color | varchar(20) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

建立表后,使用以下 SQL 插入示例数据:

INSERT INTO fruit (id, name, color) VALUES (NULL, 'Banana', 'Yellow'), (NULL, 'Pineapple', 'Green')

使用以下 SQL 确认数据存在:

SELECT * FROM fruit;

输出:

+----+-----------+--------+
| id | name      | color  |
+----+-----------+--------+
|  1 | Banana    | Yellow |
|  2 | Pineapple | Green  |
+----+-----------+--------+

现在,你可以从 PHP 中获取结果。


在 PHP 中使用 pdostatement.fetchall() 获取结果

在你可以使用 PDOStament.fetchAll() 获取结果之前,你需要连接到你之前创建的数据库。创建一个名为 config.php 的文件,并放置以下代码;如果你的数据库用户名和密码不同,请替换它们。

<?php
    # If necessary, replace the values for the
    # user and password variables
    $host = 'localhost';
	$database = 'fruit_db';
	$user = 'root';
	$password = '';
?>

当你想在文件中获取数据库结果时,你需要导入 config.php

创建另一个名为 fetchpdo.php 的文件。在文件中,你将执行以下操作:

  • 连接到数据库。
  • 创建一个新的 PDO 连接。
  • 使用 prepare() 方法创建一个准备好的 SQL 语句。
  • 执行语句。
  • 使用 fetchAll() 方法获取结果。

现在,在 fetchpdo.php 中键入以下代码。

<?php
    // Require the config file. It contains
	// the database connection
	require ('config.php');

	// Create a connection string
	$database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

	// Create a new PDO instance
	$pdo = new PDO($database_connection, $user, $password);

	// Prepare a SQL statement
	$statement = $pdo->prepare('SELECT name, color FROM fruit');

	// Execute the statement
	$statement->execute();

    // Fetch the results
    print("Fetch the result set:\n");
    $result = $statement->fetchAll(\PDO::FETCH_ASSOC);
    print "<pre>";
    print_r($result);
    print "</pre>";
?>

输出:

Array
(
    [0] => Array
        (
            [name] => Banana
            [color] => Yellow
        )

    [1] => Array
        (
            [name] => Pineapple
            [color] => Green
        )

)

通过迭代 PHP 中的 PDO 语句来获取结果

执行 SQL 准备语句后,你可以使用 while 循环迭代结果。你将在下一个代码块中找到详细信息。

<?php
    // Require the config file. It contains
    // the database connection
    require ('config.php');

    // Create a connection string
    $database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

    // Create a new PDO instance
    $pdo = new PDO($database_connection, $user, $password);

    // Prepare a SQL statement
    $statement = $pdo->prepare('SELECT name, color FROM fruit');

    // Execute the statement
    $statement->execute(array());

    // Iterate over the array
    foreach($statement as $row) {
        echo $row['name'] . "<br />";
    }
?>

输出:

Banana
Pineapple

在 PHP 中使用 PDO fetch() 方法获取结果

fetch() 方法将从结果中获取下一行。它允许你在 while 循环中使用它。

详细信息在下一个代码块中。

<?php
    // Require the config file. It contains
    // the database connection
    require ('config.php');

    // Create a connection string
    $database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

    // Create a new PDO instance
    $pdo = new PDO($database_connection, $user, $password);

    // Prepare a SQL statement
    $statement = $pdo->prepare('SELECT name, color FROM fruit');

    // Execute the statement
    $statement->execute(array());

    // Use while loop over the array
    while ($row = $statement->fetch()) {
        echo $row['name'] . "<br />";
    }
?>

PDO fetch() 方法的预处理结果

如果你希望对数据库数据进行预处理,可以使用 while 循环。然后将处理后的结果存储在一个数组中。以下代码向你展示了如何执行此操作。

<?php
    
    // Require the config file. It contains
    // the database connection
    require ('config.php');

    // Create a connection string
    $database_connection = "mysql:host=$host;dbname=$database;charset=UTF8";

    // Create a new PDO instance
    $pdo = new PDO($database_connection, $user, $password);

    // Create an empty array to store the results
    $result = [];

    // Prepare a SQL statement
    $statement = $pdo->prepare('SELECT name, color FROM fruit');

    // Execute the statement
    $statement->execute(array());

    // Iterate over the result and assign
    // new names to the table rows
    while ($row = $statement->fetch()) {
        $result[] = [
            'Fruit Name' => $row['name'],
            'Fruit Color' => $row['color'],
        ];
    }

    print "<pre>";
    print_r($result);
    print "</pre>";
?>

输出:

Array
(
    [0] => Array
        (
            [Fruit Name] => Banana
            [Fruit Color] => Yellow
        )

    [1] => Array
        (
            [Fruit Name] => Pineapple
            [Fruit Color] => Green
        )

)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 PHP 中获取时间差的分钟数

发布时间:2023/03/29 浏览次数:183 分类:PHP

本文介绍了如何在 PHP 中获取时间差的分钟数,包括 date_diff()函数和数学公式。它包括 date_diff()函数和数学公式。

PHP 中的重定向

发布时间:2023/03/29 浏览次数:136 分类:PHP

本教程演示了如何将用户从页面重定向到 PHP 中的其他页面

PHP 分页

发布时间:2023/03/29 浏览次数:66 分类:PHP

本教程介绍如何在 PHP 中对数据库行进行分页

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便