7

我似乎对下面的代码有问题。当查询不返回任何内容时,我无法运行插入查询。但是当db中有一行时,else语句运行正确。有谁知道为什么会发生这种情况?

$query5 = $this->db->get_where('loggedstatus', array('userid_loggedstatus' => $userid));

if ($query5->num_rows() < 0) {
    $data1 = array('isLoggedIn_loggedstatus' => 'yes', 'userid_loggedstatus' => $userid);
    $this->db->insert('loggedstatus', $data1);
} else {
    $data = array('isLoggedIn_loggedstatus' => 'yes');
    $this->db->where('userid_loggedstatus', $userid);
    $this->db->update('loggedstatus', $data);
}
4

2 回答 2

7

您是否尝试过将其更改if ($query5->num_rows() < 0) {为类似的东西if ($query5->num_rows() <= 0) {,只是一个想法。这会有所作为,因为您告诉它仅在less than zero它可能执行的情况下才执行,equal to zero并且您将跳到 else 语句。

仅供CodeIgniter num_rows()参考:

/**
 * Number of rows in the result set
 *
 * @return  int
 */
public function num_rows()
{
    if (is_int($this->num_rows))
    {
        return $this->num_rows;
    }
    elseif (count($this->result_array) > 0)
    {
        return $this->num_rows = count($this->result_array);
    }
    elseif (count($this->result_object) > 0)
    {
        return $this->num_rows = count($this->result_object);
    }

    return $this->num_rows = count($this->result_array());
}
于 2012-12-19T01:11:41.747 回答
7

更改下面显示的 if 条件应该可以解决问题。

if ($query5->num_rows() == 0)
于 2012-12-19T01:13:52.360 回答