3

我的数据库表中有一个字段creater_date作为日期时间,并且值以以下形式存储2013-09-13 02:12:44

现在我必须将 today-date(no time) 与 creater_date table field 进行比较。

我尝试了下面的代码,但它显示错误:

 function check_existing_User_weightStatus($u_id)
 {
    $this->load->database();
    $this->load->helper('date');  
    $today = date('Y-m-d');
    $array = array('creater_id' => $u_id,DATE('created_date') => $today);
    $this->db->where($array); 
    $query = $this->db->get('user_weight');
    if ($query->num_rows() > 0) {
        return true;
    } else {
        return false;
    } 
 }

得到错误:

 A Database Error Occurred

 Error Number: 1064

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '13 Sep 2013 02:48:27 +0530Asia/Calcuttaam30Asia/Calcutta13_13am30Asia/Calcutta '' at line 4

 SELECT * FROM (`user_weight`) WHERE `creater_id` = '3235' AND `2013-09-13T02:48:27+05:30Fri,` 13 Sep 2013 02:48:27 +0530Asia/Calcuttaam30Asia/Calcutta13_13am30Asia/Calcutta '2013-09-13'

 Filename: D:\xampp\htdocs\webapp\system\database\DB_driver.php

 Line Number: 330

我不想和时间比较,我只想和今天的日期比较。该字段created_date(例如 2013-09-13 02:12:44)具有datetime具有一些时间值的数据类型。但我只想与日期进行比较

4

2 回答 2

3

问题是您的代码生成了错误的 SQL 语法,如错误所示。

我不是codeIgniter的专家,但这里是如何直接进行正常查询,这可能是你想要做的:

function check_existing_User_weightStatus($u_id)
 {
    $today = date('Y-m-d');
    $this->load->database();
    $query = $this->db->query("SELECT * FROM `user_weight` WHERE `creater_id` = '$u_id' AND DATE(`created_date`) = '$today'");

    if ($query->num_rows() > 0) {
        return true;
    } else {
        return false;
    } 
 }

您的代码中的错误发生在这一行

$array = array('creater_id' => $u_id,DATE('created_date') => $today);

我很确定这不是 where 子句的完成方式,因此您可以查找 codeIgniter 文档!找到正确的方法来做到这一点!(您没有告诉 where 子句使用AND,OR等运算符)

于 2013-09-12T21:32:01.250 回答
0

您的数组语法错误。

<?php $array = array('creater_id'=>$u_id,'DATE(created_date)>=' =>$today);  ?>
于 2018-03-15T12:27:04.307 回答