如何保持foreach语句输出同一行的多个?我需要它只输出符合Sql要求一次的所有行。有什么想法吗?
$query = $this->db->query("SELECT * FROM churchMembers WHERE cMuserId = '{$userid}'");
$row = $query->row();
$membersChurchId = $row->cMchurchId;
$query = $this->db->query("SELECT wp.entryData, u.firstname, u.userid
FROM wallPosts wp, users u
WHERE wp.wpChurchId = '{$membersChurchId}'");
foreach ($query->result() as $row) {
echo $row->entryData.nl2br("\n");
}
答案 0 :(得分:1)
在讨论问题之后,查询出现了问题。 您案例中的正确查询将是
$query = $this->db->query("SELECT wp.entryData, u.firstname, u.userid FROM users u INNER JOIN wallPosts wp on wp.postingUserid = u.userid WHERE wp.wpChurchId = '{$membersChurchId}'");
我认为你正在以错误的方式接近它。如果你需要输出符合你要求的所有行,那么你必须创建一个函数,它读取行并构建输出。但是你仍然会使用foreach
function buildAll($result) {
$output = "";
foreach($result as $row) {
$output .= $row->entryData."<br />"; //no need for nl2br("\n")
}
return $output;
}
现在将此函数包含在帮助程序或任何您喜欢的函数中,例如在
代码中使用它$query = $this->db->query("SELECT wp.entryData, u.firstname, u.userid
FROM wallPosts wp, users u
WHERE wp.wpChurchId = '{$membersChurchId}'");
echo buildAll($query -> result()); //in one show
然而,当你在多个场合使用这个功能时,我上面写的方法才是好的
答案 1 :(得分:1)
嗯..我也有这个问题......我还没有找到任何关于如何摆脱阵列上重复项目的解决方案。但我对我们的问题有一个临时的补救措施。
使用它:
foreach ($query->result() as $key => $row) {
if($key%2 == 1){
echo $row->entryData.nl2br("\n");
}
}
答案 2 :(得分:0)
这是我的建议:
1)将foreach
更改为$ key =&gt; $ row并打印$ key和$ row。我记得有时我会得到重复的条目,其中一行$ row有一个$ key而另一行没有。如果这是一个问题,请尝试result_array()
而不是result()
。假设看起来很正常,我会...... [/ p>
2)确保cMuserId
和wpChurchId
是主键。否则,他们可能会有重复的条目?