CodeIgniter输出同一行的倍数

时间:2012-03-07 01:38:53

标签: php sql codeigniter

如何保持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");
}

3 个答案:

答案 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)确保cMuserIdwpChurchId是主键。否则,他们可能会有重复的条目?