【发布时间】:2017-10-19 02:13:28
【问题描述】:
我对以下代码所做的是通过 PHP 从表中获取数据,以便在网站上显示数据。
$stri = "SELECT a, b, c, d, e, f FROM table";
$stat = $conn->prepare($stri);
if ($stat->execute()) {
while ($resu = $stat->fetch(PDO::FETCH_ASSOC)) {
foreach ($resu as $key=>$value) {
echo $value . "<br>";
}
echo "<br><br>";
}
}
但是,使用两个循环似乎是多余的。难道没有更有效的方法来完成同样的事情,同时允许独立处理每一行的每个项目吗?
我打算用它做类似以下的事情,这就是为什么我需要能够独立处理这些项目。
if ($stat->execute()) {
while ($row = $stat->fetch(PDO::FETCH_ASSOC)) {
echo '<div class="row">';
foreach ($row as $key=>$value) {
echo '<div class=' .$key. '>';
if (empty($value)) echo '---<br>';
else echo $value;
echo '</div>';
}
echo '</div>';
}
}
【问题讨论】:
-
这对我来说似乎并不多余。您认为这在哪些方面显得多余?
-
@blubear 是绝对必要的两个循环来独立处理每一行的每个项目吗?
-
如果你选择使用 fetch 方法就好了。如果您选择像下面的答案那样使用 fetchAll 方法,那么您将有一个循环。无论如何,与下面的答案相比,我看不出您的代码是多余的。这是您选择使用 fetch 导致的额外循环。
-
您将需要循环获取每个配对。您可以在 mysql 中将空值设置为
---<br>。 stackoverflow.com/questions/4101564/… -
@blubear 所以与
fetchAll相比,少一个循环不会提高性能/带来好处?