【问题标题】:codeigniter - foreach query not workingcodeigniter - foreach 查询不起作用
【发布时间】:2014-03-03 16:47:28
【问题描述】:

我从 codeigniter 开始,但我遇到了数据库查询问题。 如果我在标准 PHP 代码中运行查询,它会显示查询中传递的所有数据,但如果我使用 codeigniter 运行查询,它只会显示一行带有 foreach。

在模型中:

$query = $this->db->query('select C.display_name AS "Servicio", B.output AS "Status",      B.last_time_ok AS "Ultimo OK" , B.last_time_critical AS "Ultimo Critical" 
from system_hosts     AS A 
INNER JOIN system_services AS C ON C.host_object_id = A.host_object_id 
INNER JOIN     system_servicestatus AS B ON B.service_object_id = C.service_object_id 
WHERE A.alias =     "'.$hostname.'" GROUP BY C.display_name;');                 

return $query->row_array();

在视图中:

<?php foreach ($hosts_service as $services): 
    ?>  <tr>
    <h2><td><?php echo $hosts_service['Servicio'] ?></a></td></h2>  
<h2><td><?php echo $hosts_service['Status'] ?></a></td></h2>    
<h2><td><?php echo $hosts_service['Ultimo OK'] ?></a></td></h2>     
<h2><td><?php echo $hosts_service['Ultimo Critical'] ?></a></td></h2>   </tr>    
<?php endforeach ?>

在控制器中:

$data['hosts_service'] = $this->news_model->get_service($hostname);

它返回相同的值 4 次,但是如果我在普通 PHP 中运行它会返回数据库中包含的 3 个不同的值,所以查询是正确的。 (我在 Toad 中尝试过同样的查询,结果还可以)。

¿可能是什么问题?

非常感谢!

【问题讨论】:

    标签: php codeigniter foreach


    【解决方案1】:

    通过返回 row_array(),您只会返回一行。例如:

    get_user(user_id)
    

    这将返回一个结果 - 我正在寻找的用户。

    尝试使用:

    return $query->result();
    

    查看Generating Query Results

    【讨论】:

      【解决方案2】:

      您应该使用result_array() 而不是row_array()

      试试

      return $query->result_array();
      

      而不是

      return $query->row_array();
      

      查看更多信息here

      【讨论】:

      • 非常感谢 Nouphal,您的提示解决了部分问题! Samutz 添加了解决方案的其余部分!
      【解决方案3】:

      除了Nouphal.M的回答,还需要在循环中使用item变量,而不是数组变量。

      <?php foreach ($hosts_service as $services): ?>
      <tr>
          <h2><td><?php echo $services['Servicio'] ?></a></td></h2>  
          <h2><td><?php echo $services['Status'] ?></a></td></h2>    
          <h2><td><?php echo $services['Ultimo OK'] ?></a></td></h2>     
          <h2><td><?php echo $services['Ultimo Critical'] ?></a></td></h2>
      </tr>    
      <?php endforeach ?>
      

      还有一些与您的 html 无关的问题。 &lt;h2&gt; 标签应该在 &lt;td&gt; 标签内。您有一个结束 &lt;a&gt; 标记,但没有开始 &lt;a&gt; 标记。

      【讨论】:

        猜你喜欢
        • 2012-08-18
        • 2012-09-20
        • 1970-01-01
        • 2018-09-14
        • 2022-01-03
        • 2014-06-12
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多