Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否有可能降低获取和显示数据的复杂性?_Php_Mysql_Pdo - Fatal编程技术网

Php 是否有可能降低获取和显示数据的复杂性?

Php 是否有可能降低获取和显示数据的复杂性?,php,mysql,pdo,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 $va

我使用下面的代码是通过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>";
  }
}
$stri=“从表中选择a、b、c、d、e、f”;
$stat=$conn->prepare($stri);
如果($stat->execute()){
而($resu=$stat->fetch(PDO::fetch_ASSOC)){
foreach($resu作为$key=>$value){
回声$value.“
”; } 回声“

”; } }
但是,使用两个循环似乎是多余的。在允许独立处理每行中的每一项的同时,是否有更有效的方法来完成相同的任务

我计划用它做如下事情,这就是为什么我需要能够独立处理这些项目

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>';
  }
}
if($stat->execute()){
而($row=$stat->fetch(PDO::fetch_ASSOC)){
回声';
foreach($key=>$value的行){
回声';
if(空($value))回显“---
”; 否则,将返回$value; 回声'; } 回声'; } }
功能检查($val)
{
如果(空($val))
{
回声“--
”; } 其他的 { echo$val; } } $stri=“从t中选择a、b、c、d、e、f”; 尝试 { $stat=$conn->prepare($stri); $stat->execute(); $results=$stat->fetchAll(PDO::FETCH_ASSOC); foreach($结果为$key=>$value) { 回波内爆(“”,数组映射(“检查“,$value)); 回声“

”; } } 捕获(例外$e) { 错误日志($e->getMessage()); }
我对你的代码做了一点修改。我更喜欢使用try-catch方法,而不是使用if来捕获错误

但是,使用两个循环似乎是多余的

我不知道这意味着什么,但总的来说,降低复杂性是完全可能的。为此,您需要全面使用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 ?>


我不想把它们放在一个字符串中,因为我计划在每个字符串周围插入特定的HTMLelement@Anthony按照Deno所示构建
$results
数组后,可以在try-catch块之外使用它。您将循环使用它(与Deno相同),并根据需要使用数组项构建html结构。在
$results=…
之后写入此命令,以便在屏幕上查看数组结构:
echo'。打印($results,TRUE)。“”@aendeerei谢谢,我会试试的。我编辑了我的问题。我不确定你是否看到了。我想我需要处理这些物品independently@Anthony是的,我现在看到了。我写了一个答案。正如Deno一样,我建议使用
fetchAll
构建结果集。您将看到,我将获取代码与html代码分离。在我的观点中,fetchAll()在获取多条记录时更优雅。当然,您也可以使用fetch()进行获取。注:我从不在我的代码中使用
,但那只是我,我害怕再次遇到无限循环:-)它对我来说似乎并不多余。您认为这在哪些方面是多余的?@blubear这两个循环对于独立地处理每行的每一项是绝对必要的吗?如果您选择使用fetch方法,这是一种不错的选择。如果您选择像下面的答案一样使用fetchAll方法,那么您将有一个循环。无论如何,与下面的答案相比,我看不出您的代码是多么冗余。这是由于您选择使用fetch而导致的额外循环。您需要循环以获得每个配对。您可以在mysql中将空值设置为
--
@blubear,因此与
fetchAll
相比,少一个循环不会提高性能/是一个优势?实际上我刚刚实现了这个。首先获取数据,格式化数据,并将其存储为变量,然后显示数据。:)但我最初的实现中什么不是PDO?
<?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 ?>