codeigniter - foreach查询不起作用

时间:2014-03-03 16:47:28

标签: php codeigniter foreach

我从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中运行它返回包含在DB中的3个不同的值,所以查询是正确的。 (我在Toad中尝试了相同的查询,结果没问题。)

¿可能是什么问题?

非常感谢!

3 个答案:

答案 0 :(得分:1)

您应该使用result_array()代替row_array()

return $query->result_array();

而不是

return $query->row_array();

查看更多信息here

答案 1 :(得分:0)

除了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也存在一些无关的问题。 <h2>标记应位于<td>标记内。您有一个结束<a>标记,但没有开放<a>标记。

答案 2 :(得分:0)

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

get_user(user_id)

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

尝试使用:

return $query->result();

结帐Generating Query Results