在投票系统的codeigniter中的where和clause

时间:2015-06-12 09:10:18

标签: php mysql codeigniter

我正在使用codeigniter实现一个投票系统:问题是每次用户点击upvote $this->db->set('up', 'up+1', FALSE);时都会执行,而up会增加1。但它应该只在count == 0增加。

我的模型代码是:

public function up_votes($id,$ip) {  

    $query = $this->db->query("SELECT * FROM voting_ip WHERE open_id_fk='$id' and ip_add='$ip';");  

    $result = $query->row_array();
    $count = $result['COUNT(*)'];

    if($count == 0) {
        $this->db->set('up', 'up+1', FALSE);
        $this->db->where('open_id', $id);
        $this->db->update('country');
    }

}

3 个答案:

答案 0 :(得分:2)

而不是计算你使用$query->num_rows()

<强> MODEL

public function up_votes($id,$ip) {  
    $query = $this->db->query("SELECT * FROM voting_ip WHERE open_id_fk='$id' and ip_add='$ip'");  
   $count= $query->num_rows();
    if($count == 0) {
        $this->db->set('up', 'up+1', FALSE);
        $this->db->where('open_id', $id);
        $this->db->update('country');
        return TRUE;
    }else{
         return FALSE;
     }

}

答案 1 :(得分:0)

您还需要获取COUNT -

$query = $this->db->query("SELECT *, COUNT(*) FROM voting_ip WHERE open_id_fk='$id' and ip_add='$ip'");

答案 2 :(得分:0)

更改以下行

  

$ count = $ result [&#39; COUNT(*)&#39;];

使用

  

$ count = sizeof($ result);

在CI中,row_array函数返回数组,因此可以计算数组的大小。请检查此链接:Generating Query Results