如何转换字符串日期以与数据库,PHP中的日期进行比较

时间:2019-05-06 06:37:45

标签: php mysql

我正在尝试将发送到函数中的字符串转换为日期,以便可以将其与数据库中的日期字段进行比较,但是它不起作用,我也不知道为什么。

我已经尝试过了:

<a href="<?php echo site_url('job/DOEIntakeForm/' . $hearingdate); ?>">Download Intake Forms</a>

public function DOEIntakeForm($hearingDate) {
    $newDate = date_format(date_create($hearingDate), 'Y-m-d');
    $query = 'SELECT id, orderdata, reportername, hearing FROM job WHERE jobtypeid = 307 AND hearingtype = 9 AND hearing = ' . $newDate;
    $result = $this->db->query($query)->result();
    echo '<pre>'; print_r($result); exit;
}

然后我尝试以已格式化的格式发送日期,例如:

<a href="<?php echo site_url('job/DOEIntakeForm/' . date('Y-m-d',strtotime($hearingdate))); ?>">Download Intake Forms</a>

但是我一直在为$ result获取一个空数组。我看不到我在做什么错。我在网上查找了许多示例,他们都以这种方式进行操作,所以为什么它不起作用?

如果我将日期硬编码到查询中,则一切正常。

TIA。

编辑: 当我var_dump $ hearingDate时,我得到C:\ ### \ application \ controllers \ Job.php:2462:string'2019-03-01'(length = 10)

1 个答案:

答案 0 :(得分:0)

首先,您应该使用准备好的语句,这样可以避免SQL注入和此类问题。您需要为日期加上单引号,所以它看起来像这样AND hearingtype = 9 AND hearing ='2019-03-01'

public function DOEIntakeForm($hearingDate) {
    $newDate = date_format(date_create($hearingDate), 'Y-m-d');
    $query = "SELECT id, orderdata, reportername, hearing FROM job WHERE jobtypeid = 307 AND hearingtype = 9 AND hearing = '" . $newDate."'";
    $result = $this->db->query($query)->result();
    echo '<pre>'; print_r($result); exit;
}

看到我用“”更改了您的“。