Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Laravel或PHP中使用BIGINT的奇怪行为_Php_Laravel_Biginteger - Fatal编程技术网

在Laravel或PHP中使用BIGINT的奇怪行为

在Laravel或PHP中使用BIGINT的奇怪行为,php,laravel,biginteger,Php,Laravel,Biginteger,我的表(MySQL)中有很多BIGINT值。我有两台计算机运行PHP代码(基于Laravel框架),从这些表中获取值。 在一台机器(Mac OS)上,一切正常,但另一台机器(Debian jessie)让我抓狂。问题是,我不能在查询中使用BIGINT值。以下是我所说的几个例子: Client::where('Client_id',10203629136783381)->first()-返回null Client::where('Client_id','10203629136783381')->f

我的表(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 client,其中client_id=?',[10203629136783381])
-返回空数组

\DB::select('select*FROM client,其中client_id=10203629136783381')
-返回正确的结果

如果我只是直接在MySQL客户机中使用BIGINT值(而不是字符串)运行查询,查询就可以正常工作


我不知道如何修复此行为并使我的代码理解BIGINT值。这两台计算机都有64位的体系结构,Mac上的PHP版本是5.6.29,Debian上的PHP版本是5.6.30。

好吧,在阅读了几个小时的文档并试用了PDO和Eloquent之后,我发现PHP在计算机上使用的mysql扩展之间存在差异。Mac OS上的PHP使用
php56 mysqlnd
,服务器上的PHP使用常规
php5 mysql
。我刚刚用
php5 mysqlnd
替换了它,现在两台计算机上的一切都很好。 希望,这些信息将对其他人有用,他们可能会被PDO的这种无法解释的行为所困扰(并且雄辩,使用PDO)。
我仍然无法理解旧驱动程序以这种方式工作的原因,但我很高兴将这个问题抛在脑后。

您的PHP版本能够处理这么大的数字吗?检查您正在使用的PHP版本,以及它是64位还是32位。这是值得测试的。正如我所提到的,在行为错误的计算机上,PHP的版本比在另一台计算机上更新鲜,在另一台计算机上,一切正常。INT_MAX在两台计算机上都有9223372036854775807值
echo 10203629136783381
产生了什么?我认为一个安装是坏的,或者是32位的,并且运行不好。不幸的是,只有你自己可以调试这个。您需要跟踪这些步骤,直到找到整数丢失其值的位置。它可以在PHP之间的任何位置,也可以在PHP和MySQL之间的TCP请求中。