我从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中尝试了相同的查询,结果没问题。)
¿可能是什么问题?
非常感谢!
答案 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();