PHP MySQL转换为SMALLINT

时间:2014-05-22 13:48:37

标签: php mysql sql

我很抱歉,如果已经回答了这个问题,我使用了搜索功能,找不到与此完全匹配的问题。

我试图通过mysql_query将邮政编码字段(澳大利亚)插入我的数据库,我已经确认一切正常,但有效的邮政编码可能是,例如0021或0214。

问题是,当插入数据库时​​它会自动丢弃前导零,这显然有问题,如果内存为我服务,这可能是因为整数是无符号的?

我需要的值是SMALLINT类型,并保留前导零,我知道mySQL有一个CONVERT函数,但是我从来没有让它工作。

这是我当前的插入查询:

$insertquery = "INSERT IGNORE INTO user (username, password, firstname, surname, address, state, postcode)
                VALUES ('$username', '$password', '$fname', '$surname', '$address', '$state', '$postcode')";
$insertresult = mysql_query($insertquery);

4 个答案:

答案 0 :(得分:1)

删除前导零不是因为integersignedsmall。它与integer全部在一起这一事实有关。如果您想保留前导零,则需要转换为使用VARCHAR,否则在获取邮政编码时必须使用lpad()

在我看来,只需使用VARCHAR

编辑:请阅读Leonardo Phinheiro的替代方案的答案!正如他所说,您可以将整数设置为ZEROFILL。虽然我仍然会使用VARCHAR来代替邮政编码。在荷兰,我们的邮政编码中都有字母。

答案 1 :(得分:1)

将数据类型更改为 unsigned-zerofill 无论您使用什么,float,int,smallint ...仅将字段编辑为 unsigned-zerofill

答案 2 :(得分:0)

如果您想保留前导零,则应考虑将邮政编码的类型更改为varchar。 执行以下SQL:

ALTER TABLE user MODIFY postcode VARCHAR(8);

答案 3 :(得分:0)

据我所知,你不能在MySQL中存储一个前导零的整数。但是,您可以同时使用MySQL和PHP生成前导零。

检查MySQL中的LPAD()http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_lpad

PHP中的str_pad()http://il1.php.net/manual/en/function.str-pad.php