当我的变量总是转换为2147483647时,这是什么意思......?

时间:2011-08-13 01:52:13

标签: doctrine-orm

我将以下代码作为我的实体:

/**
 *
 * @Entity
 * @Table(name="group")
 *
 **/
Class Group {

/**
 *
 * @Column(type="string", nullable=true)
 **/
 private $phone;

(etc...)

__get( $var ) {
return $this->$var;
}
__set( $var, $val ){
 $this->$var = $val;
}

然后我尝试用大于9位的数字修改它。例如,

$group->phone = 5147811326;

$ phone设置为21474836471111111111(它被转移到2147483647

也会出现同样的情况

如果我尝试514781,它会保持数字正常。但超过9位数只是转换。我最初将mysql列作为整数但将其转换为字符串......仍然是一个问题。

发生了什么事???? !! !!

2 个答案:

答案 0 :(得分:2)

数字“5147811326”不能存储在32位整数中,因为根本没有足够的位。 32位整数的最高二进制值是“11111111 11111111 11111111 11111111”(或十进制系统中的2147483647)。尝试使用64位整数或字符串来存储电话号码。

答案 1 :(得分:1)

这意味着您使用的数据类型是32位。 2147483647等于2 31 - 1。