这可能听起来有点愚蠢,但我需要一些帮助。我应该通过访问以下链接保存数据库中的一些记录:
http://localhost/whatsapp/index.php?r=users/create&mobile=012345678900
这就是我在控制器中所拥有的:
public function actionCreate()
{
$model=new Users;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
echo "hello"." hii";
if(!isset($_POST['number']))
{
echo "aho";
$model->number="012345678900";
//$model->number=$_POST['number'];
echo 'bye';
//$model->attributes=$_POST['Users'];
if($model->save())
echo "done";
return "Doneeee";
}
}
除列号外,数据保存正确。总是保存一定数量,如下所示: 2147483647
任何dea为什么会发生这种情况?!
答案 0 :(得分:2)
当数据类型不是bigint并且col的长度小于你输入的数字长度时,Sql引擎会生成这种数字。
答案 1 :(得分:2)
在用户表格中,将数字的类型更改为varchar ,并将长度设置为15或20或任何您想要的内容。
尝试此查询
ALTER TABLE`user` CHANGE`number``number`VARCHAR(15)
Note:-
您遇到此问题是因为您已将数字字段设置为int类型。并且int类型可以容纳的最大值是您在数据库中获得的值。因此将其更改为varchar类型将解决问题。
答案 2 :(得分:0)
以0开头的数字作为数字的OCTAL表示
http://en.wikipedia.org/wiki/Octal
这里发生的事情是,当表示为“正常”或“十进制”数字时,八进制数变大,并且在所提供的空间中溢出(类似于机动车辆中的里程计数器)。因此,当数字被保存时,它会被转换为数字,然后溢出。
正确的处理是将此视为字符串,如@Let me see
所示