数据上传显示数据库codeigniter中的不同值
问题描述:
我有一个从哪里获取要保存到数据库中的值的窗体。运行插入查询它插入到数据库中,但问题是保存的电话号码看起来像这个数字“2147483647”,虽然在查询中传递数字9846586583。每次我插入它保存这个数字。数据上传显示数据库codeigniter中的不同值
我设置的电话号码列的数据类型为int(16)
。
下面是由<?php $this->output->enable_profiler(true);?>
显示查询其显示了正确的查询
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
(即varchar(numOfDigits)
),这样就可以让在手机号码前缀零或加号。然后你可以用两个辅助方法解析它们。
int(16)
具有32767 MAXVALUE因为它只有2个字节= 16位(可以通过将二进制值111111111111111
为十进制检查。
ADDITION数2147483647
具有的二进制等效(1100110011001100110011001100
其只比4个字节以下(无符号会被重复十进制作为大而不内存明智)
答
原因:
214748364 7是MySQL的最大值int
值。
原因是因为有符号整数的最大值是2147483647.即使指定了INT(16),这并不意味着您可以将长度存储为16,因为最大允许值为2147483647. 16中的含义INT声明是填充零的长度,仅适用于在列上启用ZEROFILL的情况。但是长度仍然不能达到16个字符。
如果你有保存原始数据为9846586583,将被截断成最大值2147483647
解决方案:
从int
数据类型只是更改为bigint
或varchar
。
将数据类型更改为bigint(16) – Khushboo 2014-09-13 07:14:39