helgoland 发表于 2015-3-16 08:33:15

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

在查询中使用了内置的函数 date_format(from_unixtime(sales_time) , "%Y-%m-%d" ) as sales_date 像这样,在函数参数传递的时候中间有逗号分隔符,用来分割参数,但是在CI进行SQL查询的时候,会报错,错误代码如下
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_dateFROM (`bl_invoicings`)WHERE `operator_id` ='8'AND `state` <>1GROUP BY `sales_time`
Filename: E:\xampp\htdocs\hulian2\system\database\DB_driver.php
Line Number: 308

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


helgoland 发表于 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 将不会为你那些包含反勾号的字段名或表名提供保护。

helgoland 发表于 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 将不会使用反引号保护你的字段或者表名。这在进行复合查询时很有用。"
手册是这么写的,感谢层主

页: [1]
查看完整版本: 关于mysql数据库查询使用内置的函数问题