我有表(MySQL),其中包含许多BIGINT值。我有两台运行PHP代码(基于Laravel框架)的计算机,从这些表中获取值。 在一台机器(Mac OS)上一切正常,但另一台(Debian jessie)让我发疯。问题是,我无法在查询中使用BIGINT值。以下是我所谈论的几个例子:
Client::where('client_id', 10203629136783381)->first();
- 返回null
Client::where('client_id', '10203629136783381')->first();
- 返回正确的结果
\DB::select('SELECT * FROM clients WHERE client_id=?', [10203629136783381])
- 返回一个空数组
\DB::select('SELECT * FROM clients WHERE client_id=10203629136783381')
- 返回正确的结果
如果我只使用BIGINT值直接在MySQL-client中运行查询,而不是字符串,则查询工作正常。
我不知道如何修复此行为并使我的代码了解BIGINT值。两台计算机都采用64位架构,Mac版本为5.6.29,Debian版本为5.6.30。
答案 0 :(得分:2)
好吧,经过几个小时阅读文档并尝试使用PDO和Eloquent后,我发现PHP在计算机上使用的mysql-extentions之间存在差异。我的Mac OS上的PHP使用php56-mysqlnd
,而我的服务器上的PHP使用常规php5-mysql
。我刚刚用php5-mysqlnd
替换它,现在一切都在两台计算机上都很好用。
希望,这些信息对其他人可能会有用,他们可能会遇到PDO(以及使用PDO的Eloquent)这种无法解释的行为。
我仍然无法理解老司机那样做的原因,但我很高兴把这个问题抛在脑后。