我试图输入数据库的所有电话号码都被插入为2147483647
。
数据库字段是integer(11)
。
在插入电话号码之前,它会通过以下代码来删除所有空格,破折号和方括号:
if (!empty($hphone)) $phone = $hphone;
else if (!empty($HomePhone)) $phone = $HomePhone;
else if (!empty($Phone1)) $phone = $Phone1;
$phone = preg_replace("/[^0-9]/", "", $phone);
为什么无论电话号码是什么,每次都将电话号码插入为
2147483647
? 最佳答案
如果可以,请将电话号码转换为VARCHAR字段,不要将其存储为有符号(或无符号)数字值(int,bigint,double等)。
在这种情况下,导致您的问题的原因是MySQL中有符号INT的限制为2147483647。插入此字段的任何较大内容均将以该最大值为上限。
例如,电话号码555-555-5555如果大于该限制(5555555555> 2147483647),则存储该电话号码将导致最大值2147483647。
我也建议不要将其存储为BIG INT或任何其他数字类型。您将如何处理扩展名或特殊编码的字符,例如:
+02 112020 10020
1-333-232-9393 x203
顺便说一句:不知道第一个是否是真正的非美国数字格式,但是您明白了
同样,具有相关的前导0的电话号码也不会丢失多少数字:
021-392-9293
号码是213929293
关于php - 将值作为2147483647插入数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22081895/