当我点击一个按钮时,正在对我自己编写的API进行AJAX调用。单击该按钮时,Javascript文件将从单击的对象中检索两个data
- 属性,并将其与URL一起发送。这两个变量用于尚未执行的SQL语句的where子句中。
进行调用时,处理API请求的PHP脚本通过Input::get('data-attribute-one'))
和Input::get('data-attribute-two'))
接收两个变量。当我输出这两个属性时,会显示正确的值。
但是,当我将变量放入查询的where子句时,如下所示:
$fans = Sensor::where('fan_number', '=', $dataAttributeOne)->where('created_at', '>=', $this->now->subHours(6))->get();
没有返回任何结果。因此,我将->get()
替换为->toSql()
以检查查询,并向我显示了这段奇怪的代码:
Object {fans: "select * from "myawesomedatabasetable" where "fan_number" = ? and "created_at" >= ?"}
$dataAttributeOne
是检索到的data-atribute
,$this->now->subHours(6)
是当前时间减去6小时。当我输出它时,它的格式与数据库中的created_at
值相同,当我将它硬编码到Phpmyadmin中的SQL语句时,查询就像魅力一样执行。所以没有问题。
所以我的问题是:为什么变量会在查询执行时变成问号,如何解决?
提前致谢!
答案 0 :(得分:6)
这就是toSql()
的工作方式。此方法用于调试。