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) {ようなものに変更してみましたか。ただし、実行する可能性がある場合にのみ実行するように指示し、elseステートメントにスキップするif ($query5->num_rows() <= 0) {ため、違いが生じます。less than zeroequal to zero

そして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 ($query5->num_rows() == 0)
于 2012-12-19T01:13:52.360 に答える