PHP表单中的数字在mySQL DB中保存为随机数

时间:2012-01-17 17:45:17

标签: mysql

我有一个表单来添加/编辑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())
);

2 个答案:

答案 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

只要您从较小的号码变为较大的号码,您就不会丢失表格中的任何信息。

您应该能够快速测试并查看它是否有效。