我试图输入数据库的所有电话号码都被插入为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/

10-13 04:39