【发布时间】:2014-01-03 05:55:18
【问题描述】:
我正在尝试部署我的 Laravel (4.1) 应用程序,但我遇到了与 MySQL 一起正常工作的问题。我已经把范围缩小到了这里...
$curSessions = DB::table('sessions')->where('beginDate', '<', $curDate)->where('endDate', '>', $curDate)->get();
我尝试将其更改为以下内容并按预期返回。 (但显然记录太多了)
$curSessions = DB::table('sessions')->where('beginDate', '<', $curDate)->get();
这不起作用。它不返回任何错误和一个空数组。
$curSessions = DB::table('sessions')->where('endDate', '>', $curDate)->get();
然后我让它回显它发出的最后一条语句 (DB::getQueryLog();),当我在 phpMyAdmin 的 SQL 框中输入它时,它输出的查询有效。
要清楚。查询日志显示:
array(1) { [0]=> array(3) { ["query"]=> string(64) "select * from
sessionswherebeginDateendDate > ?" [“绑定”]=> 数组(2){ [0]=> 字符串(8)“2014-1-3”[1]=> 字符串(8)“2014-1-3”} [“时间”] => 浮动(0.26) } }
当我将“2014-1-3”插入“?”时有用。
问题是...这适用于我运行 MAMP 的计算机,但不适用于远程服务器。我检查了数据库结构以确保 endDate 和 beginDate 都设置为“日期”。
任何的想法?
【问题讨论】:
-
手动输入的查询在服务器上有效吗?
-
通过myphpadmin中的MYSQL查询框。或许有些用处。我在玩 DB::raw,我认为这可能是 pdo 处理日期的方式?当两个日期都没有用引号转义时,查询失败。是否有可能在我的计算机上,MYSQL 服务器对格式错误的查询比在我的服务器上的 asmallorange 更宽松?或者更好的是,pdo 是如何用 ?句法?也许我想太多了。
-
我也是这么想的。但是,这会很奇怪,因为日期只是作为字符串绑定的。
-
为了确定,您是否尝试传递字符串“2014-01-03”而不是“2014-1-3”?你是在传递一个 PHP 日期对象吗?
-
我明白了!我意识到在日期格式中我使用的日期没有前导零。非常感谢!如果您想添加您刚才所说的作为解决方案,我会将其标记为正确。