【问题标题】:Select a date larger than today using NotORM使用 NotORM 选择比今天大的日期
【发布时间】:2014-03-01 04:49:52
【问题描述】:

我有一个使用 NotORM 的非常简单的查询(或者我是这么认为的):

$query = $db-> irregular
    ->select('id','name','starttime','endtime')
    ->where('customer_id',$_SESSION['user']['customer_id'])
    ->where("startdate > ? ", new NotORM_Literal("NOW()")) );

“?”在上述情况下不会被替换。查询只是读取

SELECT id, name, starttime, endtime FROM irregular WHERE (customer_id = '1') AND (startdate > ? )

这意味着如何在 NotORM 中工作?

【问题讨论】:

  • new NotORM_Literal("NOW()")) 产生结果?
  • 新的 NotORM_Literal 是我正在使用的。问题似乎是 NotORM 没有换掉 ?应该的。
  • 它可能工作正常。 ? 是准备好的语句中变量的占位符,它将与查询分开发送到服务器。
  • 谢谢,迈克。因此,如果它可能正常工作,那么我如何才能真正获得我想要的最终结果?也就是说,如何只选择开始日期为>现在的记录?
  • @Will 我对 notorm 不熟悉,但请尝试:->where("startdate > NOW()"); 并忽略第二个参数。让 MySQL 计算 NOW 是什么总是最安全的选择。

标签: php pdo notorm


【解决方案1】:

将now()的值赋给一个变量,并在where子句中使用

$now =new NotORM_Literal("NOW()");

$query = $db-> irregular()
->select('id','name','starttime','endtime')
->where('customer_id',$_SESSION['user']['customer_id'])
->where("startdate > $now")->fetch();

$query = $db-> irregular(array('customer_id'=>$_SESSION['user']['customer_id']))
->select('id','name','starttime','endtime')
->where("startdate > $now")->fetch();

【讨论】:

  • $now =new NotORM_Literal("NOW()");这会奏效。您可以使用占位符或变量本身 ->where("startdate > $now")
【解决方案2】:

使用这样的东西:

        $jobs = $this->db->jobs->where(array("deleted" => 1,  "id" => $id))
        ->select('id', 'startDate')
        ->where('startDate < ?',$maxStartDate)
        ->where('startDate > ?',$minStartDate)
        ->order("id desc");

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多