【发布时间】:2015-05-05 20:59:33
【问题描述】:
我正在尝试在 Codeigniter 上使用 like 查询。该函数将我的百分号% 转义为\%。
我的查询是:
SELECT *
FROM (`invoices_rent`)
WHERE `clerk_name` = 'BEAUTY'
AND `date` LIKE '\%/\%/\%'
$this->db->like('date', $date, 'none');
如何防止百分号被转义?
我正在尝试使用可以接收数字或通配符的日期进行过滤。所以我想要的是以一种我可以获得用户想要的月份、年份或日期的方式加入这些数据。所以我会传递给查询“%/02/2015”或“%/%/2015”以返回我需要的数据范围。但是我对函数的转义有问题。 我想我需要创建整个查询而不是使用这个 CodeIgniter 函数来完成它。遵循实际模型功能。
$date = "%/03/2015";
public function getallinvoices($type = false, $date = false, $clerk = false)
{
if($type == "m")
$table = "invoice_month";
else
$table = "invoices_rent";
if($date != false)
$this->db->like('date', $date, 'none');
if($clerk != false && $clerk != "all")
$this->db->where('clerk_name', $clerk);
$query = $this->db->get($table);
$this->output->enable_profiler(TRUE);
print_r($query);
return $query->result_array();
}
我希望查询返回如下:
SELECT *
FROM (`invoices_rent`)
WHERE `clerk_name` = 'BEAUTY'
AND `date` LIKE '%/03/2015'
【问题讨论】:
-
只是为了理解你在说什么。你使用
$this->db->like('date', $date);,你的结果是SELECT * FROM (invoices_rent) WHERE clerk_name = 'BEAUTY' AND date LIKE '\%/\%/\%'你的预期结果应该是什么? -
您能提供整个 CI 查询吗?您能否提供
$date变量的确切内容? -
删除
none作为第三个参数。来自文档:If you do not want to use the wildcard (%) you can pass to the optional third argument the option 'none'. -
按照@ParagTyagi的建议做,如果需要格式化当前日期,可以使用
$now = date('Y-m-d', strtotime("now")) -
嗨,抱歉耽搁了,我提供了更多信息以提供帮助。谢谢和问候
标签: php codeigniter sql-like