繁体   English   中英

如何在PHP中使用Int64(long)而不是字符串?

[英]How to use Int64(long) in php but not string?

如何在php,如dotnet,java,c ++中使用Int64?

例如:

数据类型是mysql中的bigint(20),我想从php中保存值。我知道一个解决方案是在mysql程序中使用字符串。

表格案例:

CREATE TABLE `test_int64` (
  `id` bigint(20) unsigned NOT NULL DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

mysql程序案例:

CREATE PROCEDURE `sp_test_int64`(IN p_id VARCHAR(20))
    NOT DETERMINISTIC
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
     INSERT INTO test_int64(id) VALUES(p_id+0);
END;

php代码案例:

$id = '1660820628901389';  Then execute sql 'call sp_test_int64(\''.$id.'\')'

上面的方法没问题,但我不想这样做。 还有其他解决方案吗?

例2:

我想用PHP读取MYSQL数据输出JSON代码,如下所示:

{
    "id":1660820628901389
}

但不是 :

{
    "id":"1660820628901389"
}

我不知道该怎么办?

PHP中的INT类型链接到CPU 安装的PHP版本(您可以在64位CPU上安装32位PHP)。

要找出PHP可以支持的最大整数,简单地说

echo PHP_INT_MAX;

这将给你最大的收益。 它会给你20亿,或者数量太大而无法读取(9.2亿左右)。

请注意它是签名的(-2亿 - > +20亿,或-9 gazillion - > +9 gazilion)。 你可以在mySQL中指定unsigned,你在PHP中没有这个选项。

如果您只有20亿个限制,那么您安装了32位版本的PHP。 您可以在64位CPU上安装PHP 64位,或者您需要作为字符串处理,或者您可以使用BC Math函数将您从mySQL返回的字符串转换为数字 - 但我不确定JSON_encode会处理它*。 如果你有大数字,你应该很好,可以作为整数处理。

  • JSON_encode注意:在过去,我注意到JSON_encode和序列化将大数字转换为浮点数,然后在内部失去精度,即使它们已经是整数int。 我最近没有测试过,也没有64位测试,但另一个需要注意的是。

编辑:这是手册中的相关页面: http//php.net/manual/en/language.types.integer.php它还添加了GMP作为BC Math的替代方案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM