Laravel 5.7 PHP7.2 MySQL5.7 遇到的一个奇怪的问题.
抱歉,是我马虎了,之前是另一个错误提示,提示字段 username
不存在,然后我给字段值加上 ' 就可以了,发问题的时候没发现. 我看看能不能重现那个问题。这个问题确实是字段长度不够.谁先回答的最佳答案就给谁了,抱歉了各位
开发环境
Windows , laravel 5.7 , php7.2, mysql5.7
问题描述:
保存数据的时候sql语句报错,所有的字符串字段的值都没有加引号,都是这样: company
= 百度 , 数据无法插入.
手动修改了一下代码(HasAttributes中的setAttribute,将$this->attributes[$key] = $value改为$this->attributes[$key] = "'".$value."'";),插入/更新数据的时候没有问题了.但是不知道会不会有其他隐患.
最主要的是不知道为什么会出这样的问题.以前用think的时候也是数组作为参数的,也是正常.
model如下:
class Company extends Model
{
//定义模型关联数据表
protected $table='company';
//定义主键
protected $primaryKey='id';
//定义禁止操作时间
public $timestamps=false;
//设置允许写入的数据字段
//protected $fillable=[''];
//设置不允许写入的数据字段
protected $guarded=[''];
public function companyuser(){
return $this->hasMany('App\Model\CompanyUser','companyid','id');
}
}
控制器方法如下:
public function companyAdd(){
$company=Input::all();
unset($company['_token']);
$company['register_time']=time();
$company['password']=md5($company['repass'] . ($salt = $company['register_time']));
unset($company['repass']);
$data=Company::create($company);
return "{\'message\':$data!=null?\'success\':\'error\'}";
}
错误提示:
message: "SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'username' at row 1 (SQL: insert into `company` (`username`, `usercode`, `company_name`, `belong_leader`, `reverimg`, `audit`, `register_time`, `password`) values (111111111111, 经理, 1231212123123, 1, /uploadfile/20190815/1565852747undefined.jpg, 1, 1565852773, 8a9e3ceb7b28de854d7235a886e0745a))"
表结构如下:
CREATE TABLE IF NOT EXISTS `company` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(11) DEFAULT NULL,
`usercode` varchar(10) DEFAULT NULL,
`password` varchar(50) DEFAULT NULL,
`company_name` varchar(40) DEFAULT NULL,
`frontimg` varchar(50) DEFAULT NULL,
`reverimg` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`belong_leader` int(11) DEFAULT NULL,
`audit` tinyint(4) DEFAULT NULL,
`register_time` bigint(20) DEFAULT NULL,
`phone` char(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公司表' AUTO_INCREMENT=6 ;
抱歉,是我马虎了,之前是另一个错误提示,提示字段username
不存在, 我看看能不能重现那个问题.这个问题确实是字段长度不够
推荐文章: