我试图保护数据库中的某些数据并收到以下错误:
SQLSTATE [01000]:警告:1265数据截断列#ns; nsfw'在第1行
nsfw列的0为标准值。那是我的桌子:
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();
感谢您的帮助,抱歉我的英语不好!
答案 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