Php 如何将多个值/变量插入MySql数据库

Php 如何将多个值/变量插入MySql数据库,php,mysql,database,laravel,Php,Mysql,Database,Laravel,我正在创建一个机票预订系统,我想在数据库中插入数据。像往常一样,我使用HTML表单,所有的数据都会进入数据库。我想在数据库中插入多个座位号。(座位号=项目) 但是,当我在seatcontroller.php中使用这个函数时,我只能插入一个座位号 public function seatsinsert(Request $request) { $date = $request->input('date'); $st = $request->input('st');

我正在创建一个机票预订系统,我想在数据库中插入数据。像往常一样,我使用HTML表单,所有的数据都会进入数据库。我想在数据库中插入多个座位号。(座位号=项目)

但是,当我在seatcontroller.php中使用这个函数时,我只能插入一个座位号

public function seatsinsert(Request $request) {

    $date = $request->input('date');
    $st = $request->input('st');
    $item = $request->input('items');

    $user = new Seats();
    $user->date = $date;
    $user->st = $st;
    $user->item = $item;

    $this->validate($request, [
        'date' => 'required'
    ]);

    $user->save();

    $request->session()->flash('Msg', 'Successfully Inserted !!');

    return redirect('Seats');
}
然后我更改了seatcontroller.php中的函数,如下所示,将多个座位号插入数据库。但是,现在我无法插入任何数据。在我的控制台中,它向我显示此错误-

POST http://localhost/FinalProject/public/seatsinsert 500 (Internal Server Error)

ajax @ jquery.min.js:19
(anonymous) @ Seats:442
handle @ jquery.min.js:19
(anonymous) @ jquery.min.js:19
jquery.min.js:19 XHR finished loading: POST "
加载资源失败:服务器响应状态为500 (内部服务器错误)

我怎样才能解决这个问题

这是我的座位。blade.php

<form class="form-horizontal" id="form1" method="POST" action="{{ route('seatsinsert') }}" enctype="multipart/form-data">    

    {{ csrf_field() }}    

    <div class="dt"> <br>

        @if(session()->has('Msg'))
        <h4 class="alert alert-success"> {{ session()->get('Msg') }} </h4>
        @endif    

        <div class="form-group row">
            <label for="example-date-input" class="col-2 col-form-label">Select Date :</label>
            <div class="col-10">
                <input class="form-control" type="date" name="date" placeholder="mm-dd-yyyy" id="example-date-input">
            </div>
        </div>

        <div class="form-group">
            <label for="exampleSelect1">Select Time :</label>
            <select name="st" class="form-control" id="exampleSelect1">
                <option>10.30 am</option>
                <option>1.30 pm</option>
                <option>4.30 pm</option>
                <option>7.30 pm</option>
            </select>
        </div>  

    </div>

    <h2 style="font-size:1.2em;font-family: Times New Roman;"> Choose seats by clicking below seats :</h2>

    <div id="holder"> 
        <ul id="place">
        </ul>    
    </div>

    <input type="submit" class="btn btn-primary" id="btnShowNew" value="Continue"> <br><br>

    <script type="text/javascript">

        $(function () {

            $('#btnShowNew').click(function (e) {
e.preventDefault();

var items = [];
$.each($('#place li.' + settings.selectingSeatCss + ' a'), function (index, value) {
    items.push($(this).attr('title'));
});

    console.log(items);

   // $(location).attr('href', 'Seats');

    $.ajax({
    type: "post",
    url: "{{ route('seatsinsert') }}",
    data: {
        _token: "{{ csrf_token() }}",
        items: items,
        date: $('input[name=date]').val(),
        st: $('select[name=st]').val()
    }, success: function(data){
        $("form").trigger("reset");  
        $('#success_message').fadeIn().html("Text");  
    }

    });
});
        });

    </script>
</form>
这是Laravel错误日志

local.ERROR:为foreach()提供的参数无效 {“异常”:“[object](ErrorException(代码:0):参数无效 为位于的foreach()提供 D:\wamp64\www\FinalProject\app\Http\Controllers\seatcontroller.php:28)

php:28是

foreach($request->input(“items”)作为$item){

我使用了dd($request->input('items');并单击了submit按钮,但什么也没发生。但是,当我从浏览器中检查控制台时,它显示了以下错误-

POST http://localhost/FinalProject/public/seatsinsert 500 (Internal Server Error)

ajax @ jquery.min.js:19
(anonymous) @ Seats:442
handle @ jquery.min.js:19
(anonymous) @ jquery.min.js:19
jquery.min.js:19 XHR finished loading: POST "

在存储到数据库之前,将座位号转换为json字符串并按如下方式存储

在你的控制器

$user = new Seats();

   $user->date = $date;

   $user->st = $st;

   $user->item = json_encode($request->input('items'));

   $user->save();

之后,要显示座位号,您可以使用json\u decode函数进行解码

问题是通过ajax请求传递数组。要通过ajax传递数组,您必须
json.stringify()
您的数组

$.ajax({
    type: "post",
    url: "{{ route('seatsinsert') }}",
    data: {
        _token: "{{ csrf_token() }}",
        items: JSON.stringify(items),
        date: $('input[name=date]').val(),
        st: $('select[name=st]').val()
    }, success: function(data){
        $("form").trigger("reset");  
        $('#success_message').fadeIn().html("Text");  
    }

});
在这种情况下,数组
被转换为json以通过ajax请求


还有一件事,为了获得更好的体验,您不应该将sql查询放在循环中。

错误日志中说了什么?
dd($request->input('items'))
显示了什么?@Kistlak请添加
dd($request->input('items'))
gives???@Kistlak如果您的控制器缺少项目数据,请重新检查您的流程请添加dd($request->input('items'))提供的内容??不,它仍然只插入一个座位号。您从这个dd($request->input('items')中获得了什么;当我单击“提交”按钮时,什么也没有发生。但是,在我的控制台面板中,我可以看到所选的座位号。因为这个控制台。记录(项目);。100%完美工作!!谢谢!!你能检查一下并回答这个问题吗-
$.ajax({
    type: "post",
    url: "{{ route('seatsinsert') }}",
    data: {
        _token: "{{ csrf_token() }}",
        items: JSON.stringify(items),
        date: $('input[name=date]').val(),
        st: $('select[name=st]').val()
    }, success: function(data){
        $("form").trigger("reset");  
        $('#success_message').fadeIn().html("Text");  
    }

});