从mySQL表中检索时,Zip Code缺少前导0

时间:2011-05-11 02:40:59

标签: php mysql codeigniter

我将mymap表中的5位邮政编码存储为CHAR(5)。但是当从表中检索到具有前导零(即02138)的邮政编码时,它变为2138.由于它作为02138存储在表中(使用phpmyadmin检查),它与PHP剥离前导0有关?我怎样才能确保保留前导0?

我在codeigniter中使用activerecords使用了很长的SQL查询字符串。

foreach($q as $row){
        /// bunch of code that adds more elements to the $row array

        $data['rows'][] = $row;
    }

4 个答案:

答案 0 :(得分:4)

str_pad($zip, 5, 0, STR_PAD_LEFT);

答案 1 :(得分:2)

你需要的是MySQL ZEROFILL。将列指定为zerofill。

答案 2 :(得分:0)

将其显示为文本而不是数字

答案 3 :(得分:0)

作为快速肮脏的解决方法,请参阅@tandu版本。但在这里你应该找到问题的根源。 会发生什么是明确的 - 某处PHP将字符串“012345”转换为int 12345。 所以现在你应该以某种方式找到,谁这样做,什么时候。 var_dump值,看看它们是字符串还是int。

可能在您的框架中的某个位置,您将列类型指定为数字,但它实际上在您的数据库中为char。