我有一个表单来添加/编辑mysql数据库中的记录。 但是,当输入电话号码时,例如'07854301812','2147483647'将保存在数据库中。 我已经回显了$ number变量,这是正确的值,因此存储在数据库中时会出错。
$sql = mysql_query("UPDATE `customer` SET `f_name` = '$fname',`l_name` = '$lname',`email` = '$email',`number` = '$number' WHERE `c_id` = '$id'");
这是我的sql DDL
CREATE TABLE Customer(
c_id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
f_name VARCHAR(50) NOT NULL,
l_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
number INTEGER,
date_joined DATE NOT NULL CHECK (date_added <= now())
);
答案 0 :(得分:1)
您的号码大于您可以存储的最大整数。如果您的号码以0
开头,如果您切换为使用BIGINT
,则会被截断,您应该只将其存储为VARCHAR
。
答案 1 :(得分:1)
我同意,看起来'2147483647'是INT的最大正值。
有关整数类型(和大小)的一些信息:http://dev.mysql.com/doc/refman/5.0/en/integer-types.html
您可以快速更改架构以使用更大的数字,如下所示:
mysql> ALTER TABLE Customer MODIFY number BIGINT;
有关Alter语法的更多信息:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html
只要您从较小的号码变为较大的号码,您就不会丢失表格中的任何信息。
您应该能够快速测试并查看它是否有效。