用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2467|回复: 3
收起左侧

[HELP] 关于mysql数据库查询使用内置的函数问题

[复制链接]
发表于 2015-3-16 08:33:15 | 显示全部楼层 |阅读模式
在查询中使用了内置的函数 date_format(from_unixtime(sales_time) , "%Y-%m-%d" ) as sales_date 像这样,在函数参数传递的时候中间有逗号分隔符,用来分割参数,但是在CI进行SQL查询的时候,会报错,错误代码如下
  1. Error Number: 1054
  2. Unknown column '"%Y-%m-%d"' in 'field list'
  3. SELECT `operator_id`, count(*) as sale_num, date_format(from_unixtime(sales_time), `"%Y-%m-%d"` ) as sales_dateFROM (`bl_invoicings`)WHERE `operator_id` =  '8'AND `state` <>  1GROUP BY `sales_time`
  4. Filename: E:\xampp\htdocs\hulian2\system\database\DB_driver.php
  5. Line Number: 308
复制代码

很明显,是把 '"%Y-%m-%d"'当做一个字段进行了查询,因为在date_format()中有逗号,请问大家都遇到过这个bug么,如何解决,谢谢


 楼主| 发表于 2015-3-16 08:35:34 | 显示全部楼层
额....代码有问题,重新粘一下
Error Number: 1054

Unknown column '"%Y-%m-%d"' in 'field list'

SELECT `operator_id`, count(*) as sale_num, date_format(from_unixtime(sales_time), `"%Y-%m-%d"` ) as sales_date FROM (`bl_invoicings`) WHERE `operator_id` = '8' AND `state` <> 1 GROUP BY `sales_time`

Filename: E:\xampp\htdocs\hulian2\system\database\DB_driver.php

Line Number: 308
发表于 2015-3-16 09:25:40 | 显示全部楼层
$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE); $this->db->where() 接受可选的第三个参数。如果你将它设置为 FALSE, CodeIgniter 将不会为你那些包含反勾号的字段名或表名提供保护。
 楼主| 发表于 2015-3-16 09:48:23 | 显示全部楼层
因為愛 发表于 2015-3-16 09:25
$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE); $this->db->where() 接受可选的第三 ...

谢谢,思路是对的,不过改的是$this->db->select('',false)
"$this->db->select() 可接受一个可选的第二个参数。如果你把它设为FALSE, CodeIgniter 将不会使用反引号保护你的字段或者表名。这在进行复合查询时很有用。"
手册是这么写的,感谢层主

本版积分规则