0

我有一张桌子,里面有几列。我想使用其中两个过滤一些记录,一个是 INT 类型,第二个是 DATETIME 类型。我正在使用 PHP PDO 扩展来连接数据库并进行一些查询。

我正在尝试从我的表中获取日期时间字段低于给定日期的记录,fe

<?php
    $date = date("Y-m-d");
    $this->db->query("SELECT * FROM `" . DB_PREFIX . "fanpage` WHERE `flag_warning` = ? AND DATE(`update_date`) < ?", array(1, $date));
?>

这将返回 NULL,但是当我将相同的查询粘贴到 phpMyAdmin 窗口中时,它会显示正确的记录。问题是什么?

编辑:

查询函数的片段:

public function query($sql, $params = array())
{
    $result = array();
    $result['query'] = $this->pdo->prepare($sql);
    $result['query']->execute($params);
    $this->lastResult = $result['query'];
    unset($result['query']);
}
4

3 回答 3

0

利用

$sqlStatement = $this->db->prepare("SELECT * FROM `" . DB_PREFIX . "fanpage` WHERE `flag_warning` = ? AND `update_date` < CURDATE()");
$this->db->execute(array(1));
$result = $sqlStatement->fetchAll(PDO::FETCH_ASSOC);

现在 $result 有你需要的东西。

于 2013-08-07T11:00:16.977 回答
0

根本不需要准备好的语句

WHERE flag_warning = 1 AND update_date < CURDATE()
于 2013-08-07T10:50:37.853 回答
-1

我已将列名更改为date_time_upd并且它现在可以工作,我认为这是错误或其他东西,也许有人可以解释一下?

编辑:

好的,我已经想通了。有一段代码检查查询中是否出现“UPDATE、DELETE OR INSERT”字样,如果有类似的字词,则未获取查询结果。我已将其更改为搜索 SELECT 单词,现在一切正常。

于 2013-08-07T11:39:19.143 回答