2016-06-08 89 views
2

你好,我正面临使用CodeIgniter中的查询生成器problemm。问题是它使用单引号包装日期。查询如下所示:摆脱日期中的单引号codeigniter

SELECT * 
FROM `enquiries` 
WHERE DAY(enquiry_date) = 'DAY(CURDATE())' 
AND YEAR(enquiry_date) = 'YEAR(CURDATE())' 
AND MONTH(enquiry_date) = 'MONTH(CURDATE())' 

当然,由于单引号,它永远不会返回任何结果。有什么办法摆脱他们?或者我必须做一个硬编码查询?

如果我执行从phpmyadmin的SQL控制台相同的查询这样

SELECT * FROM `enquiries` WHERE DAY(enquiry_date) = DAY(CURDATE()) AND MONTH(enquiry_date) = MONTH(CURDATE()) AND YEAR(enquiry_date) = YEAR(CURDATE()) 

它工作正常。

我的方法:

public function enquiries_get(){ 
    $this->load->model('Model_enquiries'); 
    $enquiries = $this->Model_enquiries->get_many_by(array('DAY(enquiry_date)' => 'DAY(CURDATE())', 'YEAR(enquiry_date)' => 'YEAR(CURDATE())', 'MONTH(enquiry_date)' => 'MONTH(CURDATE())')); 
    if ($enquiries) { 
     $this->response(array('status' => 'success', 'status_code' => '200', 'message' => '200 OK', 'response' => $enquiries)); 
    } else { 
     $this->response(array('status' => 'failure', 'status_code' => '404', 'message' => '404 Not Found', 'response' => 'We couldn\'t find any enquiries for today. Please check again later.'), REST_Controller::HTTP_NOT_FOUND); 
    } 

} 

什么想法?

+0

'set()'函数带有第三个参数,可以用来保留这些值,这是调用这样的函数所必需的。 [查询构建器文档](https://www.codeigniter.com/userguide3/database/query_builder.html#inserting-data)解释了这一点。 – tadman

回答

1

你可以尝试PHP函数来获得今天的日期,年份和月份这样的....

$year = date('Y'); 
$month = date('m'); 
$day = date('D'); 

而且传递变量直接查询...!

+0

我管理它与$ this-> db-> query()直接感谢 – BRG

+0

欢迎.... @ BRG – Kunal