我使用以下代码执行的操作是通过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>';
}
}
答案 0 :(得分:2)
然而,使用两个循环似乎是多余的。
我无法明白这意味着什么,但总的来说,降低复杂性是非常有可能的。为此,您需要完全使用PDO,而不是仅仅替换mysql_query()。关注点分离也有帮助
首先以数组
的形式获取数据$sql = "SELECT a, b, c, d, e, f FROM table";
$stmt = $conn->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll();
然后在页面的 HTML部分内的某处显示它
<?php foreach ($data as $row): ?>
<div class="row">
<?php foreach ($row as $key=>$value): ?>
<div class="<?=$key?>">
<?php if (!$value): ?>
---<br>
<?php else ?>
<?=$value?>
<?php endif ?>
</div>
<?php endforeach ?>
</div>
<?php endforeach ?>
答案 1 :(得分:1)
function checking($val)
{
if(empty($val))
{
echo "---<br>";
}
else
{
echo $val;
}
}
$stri = "SELECT a, b, c, d, e, f FROM t";
try
{
$stat = $conn->prepare($stri);
$stat->execute();
$results = $stat->fetchAll(PDO::FETCH_ASSOC);
foreach ($results as $key=>$value)
{
echo implode('',array_map("checking",$value));
echo "<br><br>";
}
}
catch(Exception $e)
{
error_log($e->getMessage());
}
我对你的代码做了一些改动。我宁愿使用try catch方法,而不是使用if来捕获错误。