2014-09-13 103 views
0

我有一个从哪里获取要保存到数据库中的值的窗体。运行插入查询它插入到数据库中,但问题是保存的电话号码看起来像这个数字“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' 
) 
+2

将数据类型更改为bigint(16) – Khushboo 2014-09-13 07:14:39

回答

0

我真的建议更改intString(即varchar(numOfDigits)),这样就可以让在手机号码前缀零或加号。然后你可以用两个辅助方法解析它们。

int(16)具有32767 MAXVALUE因为它只有2个字节= 16位(可以通过将二进制值111111111111111为十进制检查。

ADDITION2147483647具有的二进制等效(1100110011001100110011001100其只比4个字节以下(无符号会被重复十进制作为大而不内存明智)

0

原因:

214748364 7是MySQL的最大值int值。
原因是因为有符号整数的最大值是2147483647.即使指定了INT(16),这并不意味着您可以将长度存储为16,因为最大允许值为2147483647. 16中的含义INT声明是填充零的长度,仅适用于在列上启用ZEROFILL的情况。但是长度仍然不能达到16个字符。

如果你有保存原始数据为9846586583,将被截断成最大值2147483647


解决方案:

int数据类型只是更改为bigintvarchar