大佬教程收集整理的这篇文章主要介绍了php-mysql在查找和插入时将整数截断为奇数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在PHP中使用Laravel的Eloquent插入并查找记录.
发生的是,当我插入整数时,这里是-1001094515039,它将其更改为-367135071并将其存储在字段中.
字段类型为Bigint,长度为20个字符,我曾尝试将其存储在文本类型字段和VarCHAR字段中,但是会发生相同的情况.
另外,当我在@L_155_0@myAdmin中手动将其更改为-1001094515039时,我尝试使用Eloquent的find方法来查找它,但它没有给我该记录!
该脚本在使用PHP 5.X的第一台服务器上运行,当前服务器使用PHP 7.x,我认为可能是这种情况!
我已经尝试过将MysqL_ATTR_MAX_BUFFER_SIZE设置为16 * 1024 * 1024的选项,但是那也不起作用.
这是int的PHP最大值,最小值:
最小整数:-9223372036854775808
最大整数:9223372036854775807
有什么办法吗?
更新:
这是我插入数据的方式:
$Group = new Group();
$Group->id = -1001094515039;
$Group->registerdate = "2017-02-03 00:56:01";
$Group->name = "Test Ginger 2";
$Group->owner_id = 81997375;
$Group->save();
var_dump($Group-> save())结果是:
http://textuploader.com/d1oo7
强调:
[attributes:protected] => Array
(
[id] => -1001094515039
[registerdate] => 2017-02-03 00:56:01
[name] => Test Ginger 2
[owner_id] => 81997375
)
create table `groups` (
`id` bigint(20) NOT NULL,
`name` varchar(100) CHARACTER SET utf8mb4 NOT NULL,
`owner_id` int(11) NOT NULL,
`acive` tinyint(1) NOT NULL DEFAULT '0',
`autorounds` tinyint(1) NOT NULL DEFAULT '0',
`timezone` varchar(50) NOT NULL DEFAULT 'Pacific/Easter',
`registerdate` datetiR_308_11845@e NOT NULL,
PRIMARY KEY (`id`),
KEY `owner_id` (`owner_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
解决方法:
我现在怀疑我了解这个问题.
我在PHP 5.5实例和PHP 7.0实例上运行了以下var_dumps.
dd(array(‘RawValue’=> -1001094515039),array(‘using intval()’=> intval(-1001094515039)),array(‘PHP Version’=> PHPversion()));
结果如下:
5.5
7.0
[link]:http://php.net/manual/en/function.intval.php中还有更多信息,但我怀疑PHP中原始数字和整数的变化(从5更改为7)导致了您的问题.将变量包装在intval()中应该可以解决您的问题.
希望这能解决您的问题!
以上是大佬教程为你收集整理的php-mysql在查找和插入时将整数截断为奇数全部内容,希望文章能够帮你解决php-mysql在查找和插入时将整数截断为奇数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。