在本教程中,我将向您展示如何使用 PHP 的 PDO 对象从 MySQL 数据库中选择行。请注意,本文针对的是正在寻找某种“备忘单”的初学者。
PS:如果你是“菜鸟”,那么在使用以下任何代码之前,你需要知道如何连接到 MySQL 数据库。如果未连接到数据库,则无法从数据库中选择数据。
在上一篇教程中,我向您展示了如何使用 PDO 对象将行插入 MySQL 数据库。我还使用了一个非常简单的表结构来帮助说明我的代码示例:
- CREATE TABLE IF NOT EXISTS `cars` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `make` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
- `model` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
使用 PDO 对象从 MySQL 中选择行有三种主要方法:
在您的 SELECT 查询不易受到 SQL 注入影响的情况下,您可以像这样使用 PDO 查询功能:
- //Selecting multiple rows from a MySQL database using the PDO::query function.
- $sql = "SELECT `id`, `make`, `model` FROM `cars` ORDER BY make ASC";
-
- foreach($pdo->query($sql, PDO::FETCH_ASSOC) as $row){
- echo 'Make: ' . $row['make'] . '
'; - echo 'Model: ' . $row['model'] . '
'; - }
请注意,当使用外部变量时,不应使用此函数!如果您使用来自客户端的变量(例如,表单变量或 GET 变量),那么您应该使用以下方法之一。
如果您希望使用准备好的语句从 MySQL 中选择多行,那么您可以这样做:
- //Selecting multiple rows using prepared statements.
- $sql = "SELECT `id`, `make`, `model` FROM `cars` WHERE `make` = :make";
-
- //Prepare our SELECT statement.
- $statement = $pdo->prepare($sql);
-
- //The make that we are looking for.
- $make = 'Nissan';
-
- //Bind our value to the paramater :make.
- $statement->bindValue(':make', $make);
-
- //Execute our statement.
- $statement->execute();
-
- //Fetch our rows. Array (empty if no rows). False on failure.
- $rows = $statement->fetchAll(PDO::FETCH_ASSOC);
-
- //Loop through the $rows array.
- foreach($rows as $row){
- echo 'Make: ' . $row['make'] . '
'; - echo 'Model: ' . $row['model'] . '
'; - }
上述代码的分步指南:
在此示例中,我们将使用准备好的语句从 MySQL 数据库中选择一行:
- //Selecting a single row!
- $sql = "SELECT `id`, `make`, `model` FROM `cars` WHERE `id` = :id";
-
- //Prepare our SELECT statement.
- $statement = $pdo->prepare($sql);
-
- //The Primary Key of the row that we want to select.
- $id = 1;
-
- //Bind our value to the paramater :id.
- $statement->bindValue(':id', $id);
-
- //Execute our SELECT statement.
- $statement->execute();
-
- //Fetch the row.
- $row = $statement->fetch(PDO::FETCH_ASSOC);
-
- //If $row is FALSE, then no row was returned.
- if($row === false){
- echo $id . ' not found!';
- } else{
- echo 'Found: ' . $row['make'] . ' ' . $row['model'];
- }
如您所见,此代码片段与我们在上面示例中使用的“Fetch All”语句非常相似。但是,这一次,我们不是使用“fetch all”来选择多行,而是使用“fetch”来选择一行。请注意,如果没有找到值,此函数将返回布尔 FALSE 值!
相关推荐阅读: