PHP - PDO - 如何只用一个查询获取多行?

标签 php database pdo

首先,我是 PDO 的新手。我正在做一个小项目来提升自己。

我正在使用这样的代码从我的数据库中获取单行:

    $sql = "SELECT * FROM users WHERE ID = 1";
    $sql_prepare = $db -> prepare($sql);
    $result = $db -> query($sql);
    $user = $result -> fetch(PDO::FETCH_ASSOC);

并像这样回显该行的任何结果:

    echo $user['ID'];
    echo $user['Name'];

我需要仅使用一个查询从我的数据库中获取多行。我不想一遍又一遍地查询我需要的每一行。

我首先想到的是尝试这个:

    $sql = "SELECT * FROM users WHERE ID = 1 AND ID = 4 AND ID = 17";
    $sql_prepare = $db -> prepare($sql);
    $result = $db -> query($sql);
    $user = $result -> fetch(PDO::FETCH_ASSOC);

但它并没有像预期的那样工作。我在编码论坛上研究了几个小时,但所有答案都是关于使用 fetchAll 方法,然后使用 foreach 循环输出结果。我不想通过加载整个数据库表来压缩代码。我只想使用一个查询从我的数据库中加载特定行。

所以我的问题是:

如何在不使用 fetchAll 方法且仅使用一个查询的情况下从我的数据库中获取多个和特定的行?

感谢您的回答和提前时间。

抱歉,如果这个问题之前被问过。

最佳答案

您需要将查询修改为

SELECT * FROM users WHERE ID IN(1,4,17);

并使用fetchAll()返回所有记录而不是一个记录的方法。

如果你不想使用 fetchAll(); 那么你需要在循环中使用 fetch() 并且你仍然需要修改查询。

while ($user = $result->fetch(PDO::FETCH_ASSOC)) {
  print_r($user);
}

注意:您使用不带参数的准备语句。

关于PHP - PDO - 如何只用一个查询获取多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31975237/

相关文章:

php - 在 PHP 提交上从 URL 发送 XML

php - 包含子字符串的字符串的正则表达式 包含子字符串

浏览器中显示的 PHP 代码

php - Microsoft 使用 PHP 和 PDO Access

php - 有没有一种惯用的方法可以从 PHP 中的数组中获取可能未定义的键?

php - 使用自动完成从 mysql 表返回用户 ID

php - "Can' t linux服务器上通过socket连接本地MySQL服务器

mysql - 如何根据没有数据的月份统计并选择所有记录

php - 无法使用 PDO 正确连接到 MySql

php - 我可以在 PHP 中混合使用 MySQL API 吗?