数据库中空值的问题

时间:2011-09-17 17:57:03

标签: php mysql function codeigniter

我有一个功能,我在整个地方用它来吸引用户朋友离开数据库。但是我最近不得不删除一些用户在论坛上引起问题,这给了我一些“试图获取非对象属性”的问题,并且我已将其追溯到此功能。

function isFriend($user_id, $friend_id){
    $this->db->from('friends');
    $this->db->where('user_id', $user_id);
    $this->db->where('friend_id', $friend_id);
    $this->db->where('removed', 0);
    $query = $this->db->get(); 
    $result = $query->result();
    return count($result);
}

有谁知道如何调整此功能以忽略已删除的用户?

3 个答案:

答案 0 :(得分:1)

如果你所做的只是计算结果,你可以尝试这样做:

$this->db->count_all_results();

像这样:

function isFriend($user_id, $friend_id)
{
    $num = $this->db
        ->from('friends')
        ->where('user_id', $user_id)
        ->where('friend_id', $friend_id)
        ->where('removed', 0)
        ->from('TABLE_NAME')
        ->count_all_results();

    return $num;
}

如果没有结果,它应返回0,而当前函数中的$query(我相信)可能不会返回您可以调用result()的对象(因此您的错误)

http://codeigniter.com/user_guide/database/active_record.html

  

$这 - > DB-> count_all_results();

     

允许您确定特定Active中的行数   记录查询。查询将接受Active Record限制器,例如   where(),or_where(),like(),or_like()等。示例:

echo $this->db->count_all_results('my_table'); // Produces an integer, like 25

$this->db->like('title', 'match');
$this->db->from('my_table'); echo
$this->db->count_all_results(); // Produces an integer, like 17

可能有“更好”的方式,但不知道应用程序的内容很难说。

答案 1 :(得分:0)

为什么当你将标志“删除”时,你是否实际将它们从数据库中删除? 无论如何,我认为你还应该删除那些被删除用户的连接,我没有看到该功能有任何问题。

尝试改变功能,这只是一个黑客,这不是一个好习惯。

答案 2 :(得分:0)

我认为函数本身看起来很好,但是当查询返回0结果时,似乎可能会导致错误。

如果在好友表或用户表中删除了col?

也许您应该对users表执行连接。