Onr*_*S90 6 php database pdo rows fetch
首先,我是PDO的新手.我正在做一个小项目来提高自己.
我正在使用这样的代码从我的数据库中获取单行:
$sql = "SELECT * FROM users WHERE ID = 1";
$sql_prepare = $db -> prepare($sql);
$result = $db -> query($sql);
$user = $result -> fetch(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)
并回显该行的任何结果:
echo $user['ID'];
echo $user['Name'];
Run Code Online (Sandbox Code Playgroud)
我只需要使用一个查询就可以从我的数据库中获取多行.我不想一遍又一遍地查询我需要的每一行.
我想到的第一件事就是尝试这个:
$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);
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作.我研究了几个小时的编码论坛,但所有答案都是关于使用fetchAll方法,然后使用foreach循环输出结果.我不想通过加载整个数据库表来拉紧代码.我只想使用一个查询从我的数据库加载特定的行.
所以我的问题是:
如何在不使用fetchAll方法且只使用一个查询的情况下从数据库中获取多个特定行?
感谢您提前的答案和时间.
对不起,如果之前有问题.
您需要修改查询
SELECT * FROM users WHERE ID IN(1,4,17);
Run Code Online (Sandbox Code Playgroud)
并使用fetchAll()方法返回所有记录而不是一个.
如果你不想使用fetchAll();那么你需要在循环中使用fetch(),你仍然需要修改查询.
while ($user = $result->fetch(PDO::FETCH_ASSOC)) {
print_r($user);
}
Run Code Online (Sandbox Code Playgroud)
注意:您使用没有参数的预准备语句.
你应该像这样使用它
$sth = $dbh->prepare('SELECT * FROM users WHERE ID IN(?,?,?)');
if($sth->execute([1,2,3])) {
//1,2,3 is the value to be send
if($sth->rowCount() > 0) {
while($result = $sth->fetchObject()) {
print_r($result);
}
} else {
echo 'there are no result';
}
} else {
echo 'there error in the query';
}
Run Code Online (Sandbox Code Playgroud)
有很多方法可以做这件事,但这只是基础准备 -> 执行 -> 获取数据
| 归档时间: |
|
| 查看次数: |
12494 次 |
| 最近记录: |