【问题标题】:Show more than one result from JOIN with if statement使用 if 语句显示多个 JOIN 结果
【发布时间】:2015-07-04 12:47:36
【问题描述】:

我有这个 JOIN,它让我得到的不仅仅是结果:

at.tipo AS atividade,
at.data AS datacadastro,
at.user AS usercadastro, 

LEFT JOIN atividades at
        ON (at.produto = '$produto')
        AND (at.tipo = 'cadastra' OR at.tipo = 'revisado')  

我有:if string = 'cadastra' shows somethingif string = 'revisado' shows something else

<?php

    if ($row['atividade'] == 'cadastra') {  
        echo '<div id="user-img">';
        echo '<img src="http://'.$row['imguser'].'"/></div>';   
        echo '<div id="user-cadastro" class="greytxt">';                    
        echo 'Cadastrado por <br>' .$row['usercadastro']. '<br>em ';
        echo $row['datacadastro']. '</div>';
    }

?>

<?php

    if ($row['atividade'] == 'revisado') {  
        echo '<div id="user-img">';
        echo '<img src="http://'.$row['imguser'].'"/></div>';   
        echo '<div id="user-cadastro" class="greytxt">';                    
        echo 'Cadastrado por <br>' .$row['usercadastro']. '<br>em ';
        echo $row['datacadastro']. '</div>';
    } 

?>    

问题是,它只显示第一个结果,而不是全部。

如何显示所有结果?

编辑:

我在一个大查询中有这个 JOIN,它给了我其他重要的行。 但我只想要这个主要查询 (WHERE = $produto) 的一个结果,并且想要从我的 JOIN 表中获得更多结果。

$rows = $result->num_rows;  

for ($j = 0; $j < $rows; ++$j) {
    $result -> data_seek($j);
    $row = $result->fetch_array (MYSQLI_ASSOC);

?>

我的结果应该是这样,但 JOIN 只显示行“地籍”。

【问题讨论】:

  • 你没有 if fetch 而不是 while fetch 吗?
  • 已编辑,我使用 fetch 和 for。

标签: php mysql join conditional-statements fetch


【解决方案1】:

while 循环中使用$result-&gt;fetch_array (MYSQLI_ASSOC)

while ($row = $result->fetch_array (MYSQLI_ASSOC)) {

 if ($row['atividade'] == 'cadastra')
        {   
  echo '<div id="user-img">';
  echo '<img src="http://'.$row['imguser'].'"/></div>'; 
  echo '<div id="user-cadastro" class="greytxt">';                  
  echo 'Cadastrado por <br>' .$row['usercadastro']. '<br>em ';
  echo $row['datacadastro']. '</div>';
            } ?>

 <?php if ($row['atividade'] == 'revisado')
        {   
  echo '<div id="user-img">';
  echo '<img src="http://'.$row['imguser'].'"/></div>'; 
  echo '<div id="user-cadastro" class="greytxt">';                  
  echo 'Cadastrado por <br>' .$row['usercadastro']. '<br>em ';
  echo $row['datacadastro']. '</div>';
            }
}

【讨论】:

  • 我应该删除'for'吗?
  • @Bibiana 是的,用我的答案代码替换你的 for 代码
  • 没有改变,只显示一个结果:/ $result = $conn -&gt;query ($query); if (!$result) die ($conn-&gt;error); while ($row = $result-&gt;fetch_array (MYSQLI_ASSOC)){ ?&gt;
  • @Bibiana 在这种情况下,您的查询只返回一行,在 phpmyadmin 中尝试查询并查看结果
  • Adrian,我敢肯定,在这个 JOIN 表中,具有这些规范的结果不止一个。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多