我正在使用codeigniter的活动记录,但是我意识到我可能需要常规的SQL查询来完成我要完成的工作。有人可以看一下这段代码,并给我正确的格式。我在这里做错了什么?
我认为很明显,我试图通过阅读代码来完成什么,但是,如果您需要的不仅仅是我使用的语法(显然是错误的),我很乐意提供代码的解释。
$today = date('Y-m-d H:i:s');
$where = "type == pk_card AND (end_date > $today OR qty >= 1)";
$this->db->select('id, title, pk_card_set, pk_card_number');
$this->db->from('auctions');
$this->db->where($where);
$this->db->like("CONCAT(title, ' ', pk_card_number, ' ', pk_card_set)", $keyword);
$query = $this->db->get();
您尝试通过活动记录进行查询的方式在代码中存在许多错误
类型== pk_card-> mysql如果您想将任何值与列进行比较,则需要单=号而不是双==正确的是 type = 'pk_card'
键入== pk_card->同样,如果您想将任何字符串值与列进行比较,则需要用标准单引号将其引起来,例如 type = 'pk_card'
end_date> $ today如果您想比较日期,那么再次需要用单引号括起来的翘曲日期字符串 end_date > '$today'
现在,您可以如下编写活动记录查询
$today = date('Y-m-d H:i:s');
$keyword='Test';
$where = "(end_date > '$today' OR qty >= 1)";
$this->db->select("id, title, pk_card_set, pk_card_number ");
$this->db->from('auctions');
$this->db->where($where,null,FALSE);
$this->db->where('type','pk_card');
$this->db->like("CONCAT(title, ' ', pk_card_number, ' ', pk_card_set)", $keyword);
$query = $this->db->get();
这将生成类似于以下内容的查询
SELECT
`id`,
`title`,
`pk_card_set`,
`pk_card_number`
FROM
(`auctions`)
WHERE (
end_date > '2014-08-10 12:47:06'
OR qty >= 1
)
AND `type` = 'pk_card'
AND CONCAT(
title,
' ',
pk_card_number,
' ',
pk_card_set
) LIKE '%Test%'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句