我正在尝试将数据插入数据库。但是我不知道如何将多个选择数据插入mysql数据库。
<div class="form-group">
<select name="languages[]" class="select2 form-control" multiple="multiple "required>
<option selected>English</option>
<option VALUE="french">French</option>
<option VALUE="german">German</option>
<option VALUE="spanish">Spanish</option>
<option VALUE="turkish">Turkish</option>
<option VALUE="italian">Italian</option>
</select>
</div>
</div>
控制者
public function store(Request $request)
{
User::create($request->all());
return redirect()->back();
}
返回错误
ErrorException数组到字符串的转换
$request->languges
是一个数组,您不能将数组保存到VARCHAR()字段中。
在您的name属性languages[]
中将创建一个array,而不是string。而name属性则languages
是一个字符串
如果您有一个数组,那么您的控制器中需要一个foreach循环。
使用select2时,您需要在发送多个数据时创建一个数组。
table 属性必须是字符串而不是数组,所以让我们将数组转换为string:
与服务器端
与foreach:
public function store(Request $request)
{
$data = $request->all();
$x = NULL;
foreach($request->languages as $key => $value) {
$x .= $value .", ";
}
$data['languages'] = $x;
User::create($data);
return redirect()->back();
}
或者,使用Implode:
public function store(Request $request)
{
$data = $request->all();
$data['languages'] = implode(',', $request->languages);
User::create($data);
return redirect()->back();
}
在客户端,jQuery
:
您的标题为“将选择框的选定值作为字符串发送到PHP”。您可以在JS中通过捕获表单的Submit事件并使用.join()
来更改该字段的值来做到这一点。
$('#formid').on('submit', function(){
$('#e1').val($('#e1').val().join(','));
});
您的表格(未提供)将需要一个ID <form id="formid" ...>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句