我有一个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的情况下更新正确的值。
答案 0 :(得分:1)
值2147483647
实际上是有符号整数可以具有的最高值。
您需要将数据类型更改为bigint,然后它将允许足够大的数字。
我建议您将电话号码存储为字符串。根据用例,在某些时候可能是必要的。有些国家的实际操作电话号码从0开始。此时,最好的办法是将数字存储为字符串。
答案 1 :(得分:1)
您的问题的答案是,如果未签名,整数列的最大值为2147483647
或4294967295
。 https://dev.mysql.com/doc/refman/5.5/en/integer-types.html
您应该使用bigint
数据类型来存储大于这些值的整数。
您可能不应该将电话号码存储为整数。电话号码和邮政编码虽然格式化为数字,但实际上并不是数字。我建议将它们存储为字符串。
例如,我的邮政编码02128
如果存储在整数列中,则为2128
。