codeigniter /数据库页面未加载

时间:2013-03-05 20:30:21

标签: database codeigniter loading pyrocms

我遇到了数据库请求的问题:网页根本没有加载。

    public function get_mylist($user_id){
        $this->db->select('*');
        $this->db->from($this->_table);
        $this->db->where('my', '1');
        $this->db->where('user1', $user_id);
        $this->db->or_where('user2', $user_id);
        $query = $this->db->get()->result_array();
        if($query!=NULL)
        {
            foreach($query as $row)
            {
            echo $row['user1'];
                if($row['user2'] != $user_id)
                {
                    $data[] = $row['user2'];
                }
                else if($row['user1'] != $user_id)
                {
                    $data[] = $row['user1'];
                }
            }
            return $data;
        }
        else return 0;
}   

你有什么想法吗?

编辑:在我的日志中我有致命错误:允许的内存大小字节耗尽

所以我的循环一定是错的:/

1 个答案:

答案 0 :(得分:1)

您需要考虑数据库表中的行数以及每行的字节数。

您的表中是否有足够的数据来达到PHP配置的内存限制?

另外,检查SQL构造中的逻辑。

具体做法是:

 $this->db->where('my', '1');
 $this->db->where('user1', $user_id);
 $this->db->or_where('user2', $user_id);

where子句被解释为:

WHERE (`my` = 1 AND `user1` = $user_id) OR (`user2` = $user_id)

这是你想要的,还是你需要的:

WHERE `my` = 1 AND (`user1` = $user_id OR `user2` = $user_id)

在MySQL中,OR优先于AND

最后,作为测试,取出解析$data数组的代码并返回$row数组并使用print_r($row)将其打印出来,并确保您的查询已拔出您期望的数据。

希望这些想法可以帮助您诊断问题。祝你好运!

注意:要在SQL中实现替代逻辑,您可以执行以下操作:

 $this->db->where('my', '1');
 $this->db->where("(`user1` = $user_id OR `user2` = $user_id)");

注意立即打开/关闭括号的内部 双引号。