Laravel MySQL 在本地计算机上工作但不在远程

Posted

技术标签:

【中文标题】Laravel MySQL 在本地计算机上工作但不在远程【英文标题】:Laravel MySQL working on local computer but not remote 【发布时间】: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 sessions where beginDate endDate > ?" [“绑定”]=> 数组(2) [0]=> 字符串(8)“2014-1-3”[1]=> 字符串(8)“2014-1-3” [“时间”] => 浮动(0.26)

当我将“2014-1-3”插入“?”时有用。

问题是...这适用于我运行 MAMP 的计算机,但不适用于远程服务器。我检查了数据库结构以确保 endDatebeginDate 都设置为“日期”。 任何的想法?

【问题讨论】:

手动输入的查询在服务器上有效吗? 通过myphpadmin中的MYSQL查询框。或许有些用处。我在玩 DB::raw,我认为这可能是 pdo 处理日期的方式?当两个日期都没有用引号转义时,查询失败。是否有可能在我的计算机上,MYSQL 服务器对格式错误的查询比在我的服务器上的 asmallorange 更宽松?或者更好的是,pdo 是如何用 ?句法?也许我想太多了。 我也是这么想的。但是,这会很奇怪,因为日期只是作为字符串绑定的。 为了确定,您是否尝试传递字符串“2014-01-03”而不是“2014-1-3”?你是在传递一个 PHP 日期对象吗? 我明白了!我意识到在日期格式中我使用的日期没有前导零。非常感谢!如果您想添加您刚才所说的作为解决方案,我会将其标记为正确。 【参考方案1】:

您只需要确保包含前导 0(如 matpop 建议的那样)。

【讨论】:

【参考方案2】:

首先,您应该检查您的表格日期类型是否与您查询的内容相同。 例如,如果您的表 beginDate 列是时间戳,那么您的 $curDate 变量应该是时间戳的实例。这样做你可以这样做:

$curDate = Carbon::createFromDate("year", "month", "day");

然后你就可以使用 eloquent 内置的 laravel,如下所示:

$curSessions = Sessions::where('beginDate', '<', $curDate)
            ->where("endDate", ">", $curDate)->get();

仅供参考:您可以使用 whereBetween 进行日期时间段检查的另一个运算符,我在这里举一个例子,以便您检查它是否能完成您的工作。

$curSessions = Sessions::whereBetween('beginDate', array($beginDate, $endDate))->first();

【讨论】:

以上是关于Laravel MySQL 在本地计算机上工作但不在远程的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 session flash 在本地主机上工作但在服务器上不工作?

Laravel 视图在生产中工作但不在本地

laravel 中的护照详细信息 api 在本地主机上可以正常工作,但不能在共享主机上运行

MySQL数据库导入成功但不起作用

无法从远程计算机上的 mysql 工作台连接到 phpmyadmin 或数据库

本地计算机上的 MySQL57 服务启动然后停止