可以降低获取和显示数据的复杂性吗?

时间:2017-10-19 02:13:29

标签: php mysql pdo

我使用以下代码执行的操作是通过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>';
  }
}

2 个答案:

答案 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来捕获错误。