查询执行是否发生在get_where()以下codeigniter活动记录语句的子句中?
$this->db->select('*');
$q = $this->db->get_where('Contacts', array('id' => $contact_id));
$sql = $this->db->last_query();
Run Code Online (Sandbox Code Playgroud)
或者,一旦你打电话给它,它会发生result_array()吗?
并且是$this->db->last_query();获取查询字符串的可靠方法.
SELECT *, SUM(tbl.relevance) AS relevance FROM
(
(
SELECT q_id,
MATCH(a_content) AGAINST ('?????') AS relevance
FROM answers
WHERE
MATCH(a_content) AGAINST ('?????')
)
UNION
(
SELECT q_id,
(MATCH(q_content) AGAINST ('?????')) * 1.5 AS relevance
FROM questions
WHERE
MATCH(q_content) AGAINST ('?????')
)
) AS tbl
JOIN questions ON questions.q_id = tbl.q_id
GROUP BY tbl.q_id
ORDER BY relevance DESC
Run Code Online (Sandbox Code Playgroud) 使用like进行非常简单的搜索,并且可以省略选项,但是我发现like语句正在使查询忽略where语句
$this->db->like('LOWER(location) OR LOWER(name)', strtolower($term));
$this->db->where('stage', 1);
$this->db->order_by("name", "asc");
$query = $this->db->get($this->user_table);
return $query->result();
Run Code Online (Sandbox Code Playgroud)
使用$ term ="dublin"生成上述内容的示例;
SELECT * FROM (`users`) WHERE `stage` = 1 AND LOWER(location) OR LOWER(name) LIKE '%dublin%' ORDER BY `name` asc"
Run Code Online (Sandbox Code Playgroud)
它仍然返回'stage'不等于1的行.
有任何想法吗?谢谢!