我正在使用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');
}
}
答案 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