notorm查询条件的问题。

[问题描述,请详细说明具体的问题]
你好。我的SQL

$this->getORM()->where('timeResult > ? and timeResult < ?',$starttime,$endtime)->fetchAll();

这是例子给出的方法
return $this->getORM()->where('id > ?', 1)->where('age > ?', 18)->fetchAll(); // 或 用多个 and 连贯操作 
return $this->getORM()->and('id > ?', 1)->and('age > ?', 18)->fetchAll(); // 或 用含占位符的字符串组合多个条件 
return $this->getORM()->where('id > ? AND age > ?', 1, 18)->fetchAll(); // 或 用多个元素的数组传参 
return $this->getORM()->where(array('id > ?' => 1, 'age > ?' => 10))->fetchAll();

这是我的返回。
 

"[4 - 33.39ms]SELECT * FROM eyc_attendance_later WHERE (corpid = 'dingc11d1db6098b0a3a') AND (timeResult > ? and timeResult < ?) AND (userid IS NULL) ORDER BY timeResult; -- '1546790400000', '1546876800000'",

中间这个? 没有被相应的值给替换掉。。每次查询都是报错。。。我只要用?号的这种方法就sql报错。where("id",$id),这种直接等于的是正常的。
2.4.2版本。
 
已邀请:

dogstar - PhalApi创始人

赞同来自:

问题描述得好详细,赞一下!
 
这里混用了使用的方式,因为如果使用问号表示参数时,那么应该对应提供以数值为下标的数组参数,因此,应改为:
$this->getORM()->where('timeResult > ? and timeResult < ?', array($starttime,$endtime))->fetchAll();
注意,不是使用参数列表。
 
另一种方式,你也可以这样分开来写,用火车式的连贯接口串起来:
$this->getORM()
->where('timeResult > ?',$starttime)
->where('timeResult < ?',$endtime)
->fetchAll();

要回复问题请先登录注册