Php 在数据库codeigniter中显示不同值的数据上载
我有一个表单,从中获取要保存到数据库中的值。运行正在插入数据库的插入查询,但问题是保存的电话号码看起来像这个号码2147483647,尽管在查询中我传递的是号码9846586583。每次我插入它都会保存这个号码 我设置的电话号码列的数据类型是int16 下面是显示的查询,通过该查询可以显示正确的查询Php 在数据库codeigniter中显示不同值的数据上载,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个表单,从中获取要保存到数据库中的值。运行正在插入数据库的插入查询,但问题是保存的电话号码看起来像这个号码2147483647,尽管在查询中我传递的是号码9846586583。每次我插入它都会保存这个号码 我设置的电话号码列的数据类型是int16 下面是显示的查询,通过该查询可以显示正确的查询 INSERT INTO `posts` ( `country`, `city`, `area`, `street`, `house_no`, `hou
INSERT INTO `posts` (
`country`,
`city`,
`area`,
`street`,
`house_no`,
`house_type`,
`floor`,
`number_of_rooms`,
`price`,
`owners_phone`,
`posted_by`,
`featured_post`
)
VALUES
(
'nepal',
'pkr',
'ratekhoire',
'fulbari',
'45',
'1s',
'0',
'7',
'10000',
'9846586583',
'bhabi',
'Y'
)
实际上,我建议将int改为String,即varcharnumofidights,这样您就可以在电话号码中使用前缀0或plus。然后可以使用两个helper方法解析它们 int16的最大值为32767,因为它只有2字节=16位,您可以通过将二进制值111111111转换为十进制来检查它 此外,数字2147483647的二进制等效值为11001100,仅小于4字节。无符号的十进制数将是两倍大,但在内存方面不是这样的原因: 2147483647是MySQL的最大int值。 原因是有符号整数的最大值为2147483647。即使指定了INT16,也不意味着可以存储16的长度,因为最大允许值是2147483647。INT声明中16的含义是填充零的长度,只有在列上启用了ZEROFILL时才适用。但长度仍然不能达到16个字符 如果您已将原始数据保存为9846586583,它将被截断为最大值2147483647 解决方案:
只需将数据类型从int更改为bigint或varchar。将数据类型更改为bigint16