首先,我是 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/