0

データベース リクエストに問題があります。Web ページがまったく読み込まれません。

    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;
}   

何か考えはありますか?

編集:ログに致命的なエラーがあります:許可されたメモリサイズのバイトが使い果たされました

だから私のループは間違っているに違いない:/

4

1 に答える 1

1

DB テーブルの行数と行あたりのバイト数を考慮する必要があります。

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)");

二重引用符のすぐ内側の開き/閉じ括弧に注意してください。

于 2013-03-06T02:13:38.270 に答える