codeigniter get_where()函数

时间:2014-06-12 00:49:24

标签: php codeigniter

我在旧的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'

我应该清理什么吗?

7 个答案:

答案 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();