将int值更新为mysql php

时间:2016-03-21 19:12:32

标签: php mysql int

我有一个text输入字段,其中包含type=number。当我将包含此元素的表单发布到saveform.php时,它会以字符串的形式收到数字。所以当我使用saveform.php中的更新查询来更新具有此值的数据库时,mysql会使用此字符串的intval进行更新。在mysql我有一个列由名称mobile_no,其类型为int,长度为15

saveform.php

 $query="UPDATE `registered_users` SET `user_name`=?,`mobile_no`=?,`addressline1`=?,`addressline2`=?,`city`=?,`zipcode`=? WHERE `user_email`=?";
 $statement = $mysqli->prepare($query);
 $statement->bind_param("sisssis", $username, $mobileno, $addressline1, $addressline2, $city, $zipcode, $email);

这是我所做的查询的代码。我已经var_dump $mobile_no,并且下面给出了此转储的输出。

string '9560987629' (length=10)

这会在db中更新     int 2147483647。我应该如何在不将mysql列从int更改为string的情况下更新正确的值。

2 个答案:

答案 0 :(得分:1)

2147483647实际上是有符号整数可以具有的最高值。 您需要将数据类型更改为bigint,然后它将允许足够大的数字。

我建议您将电话号码存储为字符串。根据用例,在某些时候可能是必要的。有些国家的实际操作电话号码从0开始。此时,最好的办法是将数字存储为字符串。

Why is 2,147,483,647 the max int value?

答案 1 :(得分:1)

您的问题的答案是,如果未签名,整数列的最大值为21474836474294967295https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

您应该使用bigint数据类型来存储大于这些值的整数。

您可能不应该将电话号码存储为整数。电话号码和邮政编码虽然格式化为数字,但实际上并不是数字。我建议将它们存储为字符串。

例如,我的邮政编码02128如果存储在整数列中,则为2128