我在旧的codeigniter安装上使用活动记录,我遇到了使用get_where函数执行多个查询的问题。例如以下代码
$this->db->get_Where('activation', array('email'=>'test@yahoo.com'));
echo $this->db->last_query();
$this->db->get_Where('users', array('email'=>'test@yahoo.com'));
echo $this->db->last_query();
第一个查询生成
SELECT * FROM (`activation`) WHERE `email` = 'test@yahoo.com'
第二个引发我循环并生成
SELECT * FROM (`activation`, `users`)
WHERE `email` = 'test@yahoo.com' AND `email` = 'test@yahoo.com'
我应该清理什么吗?
答案 0 :(得分:1)
$this->db->get_Where('activation', array('email'=>'test@yahoo.com'))->row();
答案 1 :(得分:1)
使用此:
$this->db->select('*')->where('email','test@yahoo.com')->get('activation')->result()
答案 2 :(得分:0)
您需要使用$this->db->query->result();
$this->db->get_Where('activation', array('email'=>'test@yahoo.com'));
echo $this->db->last_query();
$result_1 = $this->db->query->result();
$this->db->get_Where('users', array('email'=>'test@yahoo.com'));
echo $this->db->last_query();
$result_2 = $this->db->query->result();
或者如果要返回数组,请使用result_array();
代替result();
答案 3 :(得分:0)
$this->db->get_Where('activation', array('email'=>'test@yahoo.com'));
echo $this->db->last_query();
$result_1 = $this->db->get()->result_array();
这将执行第一个查询 然后
$this->db->get_Where('users', array('email'=>'test@yahoo.com'));
echo $this->db->last_query();
$result_2 = $this->db->get()->result();
这将执行第二个查询,然后你可以在下面的代码中打印两个结果
echo "<pre>";print_r($result_1);print_r($result_2);
echo "</pre>";
答案 4 :(得分:0)
如果在同一个函数中使用多个get_where语句,那么它将被连接。 因此,最好使用这两个条件的条件一次执行一个查询。 例如,
if(//condition 1)
{
$query=$this->db->get_Where('activation', array('email'=>'test@yahoo.com'));
}
else{
$query=$this->db->get_Where('users', array('email'=>'test@yahoo.com'));
}
//finally get the active record.
echo $this->db->last_query();
否则你不会实现。 请提及获取两个表记录的目的。
答案 5 :(得分:0)
您需要像这样使用它:
$this->db->get_where('users', array('email'=>'test@yahoo.com'))->result();
除了使用get_where之外,您可以像这样简单地使用它:
$this->db->select('*');
$this->db->from('activation');
$this->db->where('email','test@yahoo.com');
or
$this->db->where(array('email'=>'test@yahoo.com'));
答案 6 :(得分:-1)
$this->db->get_where($table, $where, $limit, $offset)
$where = array('FIELD_NAME'=>value)
result_array();