Laravel - SQL - SQLSTATE [01000]:警告:1265数据截断列#ns; nsfw'在第1行

时间:2017-07-10 17:59:18

标签: mysql laravel checkbox

我试图保护数据库中的某些数据并收到以下错误:

SQLSTATE [01000]:警告:1265数据截断列#ns; nsfw'在第1行

nsfw列的0为标准值。那是我的桌子:

phpmyadminscreenshot

nsfw列也位于模型$fillable数组中。

我想检测是否选中了复选框。如果选中,则nsfw应为1.如果不是,则nsfw应为0.

这是复选框HTML代码:

 <div class="form-group">
             <label for="nsfw" class="control-label">NSFW</label>
             <br>
             <input type="checkbox" name="nsfw">
  </div>

那就是控制器代码:

 if (Input::get('nsfw')) {
       $nsfw = true;
 } else {
       $nsfw = false;
 }

 // dd($nsfw) gives me true or 
 //false back, depending if the checkbox is checked or not

 $thread = new Thread();
 $thread->name = Input::get('thread-name');
 $thread->description = Input::get('thread-desc');
 $thread->age_min = Input::get('thread-min-age');
 $thread->age_max = Input::get('thread-max-age');
 if ($nsfw == true) {
     $thread->nsfw = 1;
 } else {
     $thread->nsfw = 0;
 }
 $thread->save();

感谢您的帮助,抱歉我的英语不好!

4 个答案:

答案 0 :(得分:13)

转到config/database.php set strict为connections.mysql,然后尝试再次运行,如果没有错误,请检查是否正确插入了数据。如果您没有输入错误的数据类型,请将代码设置为将值存储为字符串:

if ($nsfw == true) {

  $thread->nsfw = '1';

} else {

  $thread->nsfw = '0';
}

答案 1 :(得分:1)

如果严格模式为true并且您收到错误,则表示您在代码中有其他错误,例如错误的数据类型或拼写错误。

Leo的回答是正确的。我只想强调一下,你应该再次将严格模式重置为true。

答案 2 :(得分:0)

另外,检查数据库列是否存在拼写错误,或者列中存在 enum 值。

答案 3 :(得分:-2)

数据被截断是因为你在输入数据时使用了逗号(,),尽量不要在要输入的数据中使用逗号。

这是我的错误:

SQLSTATE[01000]:警告:1265 列 'D01' 在第 1 行的数据被截断(SQL:插入到 mbs (kodepertanyaan, D01, D02, D03, D04, D05, D06, D07) 值(drg, 0,7, 0, 0, 0, 0, 0, 0) )

我尝试输入 0,7