我试图理解这个 SQL 语句:
$id = 5;
$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
$stmt->execute(array('id' => $id));
while($row = $stmt->fetch()) {
print_r($row);
}
有人可以逐步解释一下这里到底发生了什么吗?
据我了解:
$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
1) $stmt 即将作为 iinput 一个 SQL 查询。SQL 查询是从一个表中选择其 id 等于 5 的所有行。
$stmt->execute(array('id' => $id));
2) 我们执行语句。现在 $stmt 有这些行?
$row = $stmt->fetch()
3) 这对我来说是最令人困惑的一行。这里到底发生了什么?变量“行”一一获取 id = 5 的行?这就是 fetch() 的作用吗?如果是,它返回结果的准确程度如何?它是所有正确答案的数组?例如,所有 id = 5 的行?我不明白这个while循环在这里是如何工作的。它第一次运行“行”时会有第一行吗?第二次运行时,将有第二行满足我们的条件(id = 5)等等?每次我运行 fetch 时都会返回一个结果吗?下次我运行 fetch 时,下一个结果,直到没有更多结果可以满足查询?
我觉得我很接近得到这个。任何可以帮助我完全理解它的东西都将不胜感激!