Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用数组迭代作为列的laravel 5.3 querybuilder数据库插入_Php_Arrays_Laravel 5.3 - Fatal编程技术网

Php 使用数组迭代作为列的laravel 5.3 querybuilder数据库插入

Php 使用数组迭代作为列的laravel 5.3 querybuilder数据库插入,php,arrays,laravel-5.3,Php,Arrays,Laravel 5.3,我对Laravel是新手,对PHP充其量只是个业余爱好者,但我正在努力学习。这是我的第一个问题,因为我通常能够通过搜索找到答案 这可能是我忽略的一些简单的事情。我正在向控制器提交一个从视图最多可以有2行的表单。我正在从控制器中的数据创建一个数组,如下所示: foreach($candidates_member_id as $key => $value) { $arrData[] = array( 'member_user_id'

我对Laravel是新手,对PHP充其量只是个业余爱好者,但我正在努力学习。这是我的第一个问题,因为我通常能够通过搜索找到答案

这可能是我忽略的一些简单的事情。我正在向控制器提交一个从视图最多可以有2行的表单。我正在从控制器中的数据创建一个数组,如下所示:

    foreach($candidates_member_id as $key => $value)
    {
        $arrData[] = array( 
            'member_user_id'        => $member_user_id[$key],
            'candidates_member_id'  => $candidates_member_id[$key], 
            'candidates_district'   => $candidates_district[$key], 
            'candidate_name'        => $candidate_name[$key], 
            'created_at'            => $created_at[$key],
            'updated_at'            => $updated_at[$key]                        
        );
    }  
如果我在关联视图上打印r($arrData),我会得到如下结果:

Array
(
    [0] => Array
        (
            [member_user_id] => 1
            [candidates_member_id] => 12345
            [candidates_district] => 6
            [candidate_name] => Doe, John
            [created_at] => 2016-09-03 15:07:14
            [updated_at] => 2016-09-03 15:07:14
        )

    [1] => Array
        (
            [member_user_id] => 1
            [candidates_member_id] => 54321
            [candidates_district] => 6
            [candidate_name] => Doe, Jane
            [created_at] => 2016-09-03 15:07:15
            [updated_at] => 2016-09-03 15:07:15
        ) 
) 
但是,当我将DB insert添加到上述foreach循环中时:

DB::table('primary_votes')->insert(
            ['member_user_id' => $member_user_id,
             'candidates_member_id' => $candidates_member_id,
             'candidates_district' => $candidates_district,
             'created_at' => $created_at,
             'updated_at' => $updated_at]
        );  
我得到以下错误:

SQLSTATE[42S22]:未找到列:“字段列表”中的1054未知列“0”(SQL:插入到
primary\u投票中(
0
1
)值(1,1),(1234554321),(6,6),(2016-09-0315:07:142016-09-0315:07:15),(2016-09-0315:07:142016-09-0315:07:15)) 在Connection.php第761行中 在Connection->runQueryCallback('insert into
primary_voces
0
1
)中插入值(?),(?,(?,?),(?,(?,),(?,),(?,),(?,)数组('1','1','12345','54321','6','6','2016-09-03 15:07:14','2016-09-03 15:07:15:15','2016-09-03 15:07:14','2016-09-03 15:07:14','2016-09-03 15:07:15:15'行中的对象(闭包)).php第717行 在Connection->run('insert into
primary_voces
0
1
)值(?),(?,(?,?),(?,?),((?,?),(?,?,),(?,)数组('1','1','12345','54321','6','6','2016-09-03 15:07:14','2016-09-03 15:07:15','2016-09-03 15:07:14','2016-09-03 15:07:15'),对象(Closure)).php第481行 在Connection->statement('insert into
primary_voces
0
1
)中插入连接.php第435行中的值(?)、(?、(?、?)、(?、?)、(?、(?)、((?、(?)、(?、(?)、(?)、数组('1’、'1’、'12345’、'54321’、'6’、'6’、'2016-09-03 15:07:14’、'2016-09-03 15:07:15’、'2016-09-03 15:07:15’) 在Builder.php第2117行的Connection->insert('insert into
primary(
0
1
)中插入('insert into
primary)值(?),(?,(?,?,?),(?,(?,?),(?,(?,),(?,),(?,,,,(?,),,(?,,),,,)数组('1','1','12345','54321 6','6','2016-09-03 15:07:14','2016-09-03 15:07:15','
在VoteSubmitController.php第60行中,在生成器->插入(数组('member\u user\u id'=>array('1','1'),'candidates\u member\u id'=>array('12345','54321'),'candidates\u district'=>array('6','6'),'created\u at'=>array('2016-09-03 15:07:14','2016-09-03 15:07:15'),'updated\u at'=>array('2016-09-03 15:07:07:15'))


因此,出于某种原因,我无法理解,它试图使用数组“row”键作为列名。为什么要将单个行键解释为数据库中的一列?提前感谢。

您的代码应该如下所示:

foreach($candidates_member_id as $key => $value)
{
    $arrData = array( 
        'member_user_id'        => $member_user_id[$key],
        'candidates_member_id'  => $candidates_member_id[$key], 
        'candidates_district'   => $candidates_district[$key], 
        'candidate_name'        => $candidate_name[$key], 
        'created_at'            => $created_at[$key],
        'updated_at'            => $updated_at[$key]                        
    );
    DB::table('primary_votes')->insert($arrData);
}

mysql错误的原因是$member\u user\u id、$candidates\u member\u id是数组,而不是标量值。您不能在mysql中插入数组。

非常感谢!越来越近了。插入现在正在进行,但是第一次迭代插入了两次。有机会的时候我会试着调试一下。我有另一个insert作为该函数的一部分,再加上一个更新,我将为每个insert创建一个数组。