使用 foreach 更新 Laravel 错误:语法错误,意外 ' ' (T_STRING),期待 ']'

Posted

技术标签:

【中文标题】使用 foreach 更新 Laravel 错误:语法错误,意外 \' \' (T_STRING),期待 \']\'【英文标题】:Laravel Error Update with foreach : syntax error, unexpected ' ' (T_STRING), expecting ']'使用 foreach 更新 Laravel 错误:语法错误,意外 ' ' (T_STRING),期待 ']' 【发布时间】:2020-11-23 04:34:39 【问题描述】:

我在 SQL Server 中有数据库,并使用 Laravel 执行它。但是,我收到以下错误。

ParseError 语法错误,意外 ' ' (T_STRING),期待 ']'

我试图弄清楚为什么会这样。它显示了这个语法错误,但我不明白。我找不到错字。我阅读并更新 SQL Server 数据库。是有bug还是什么?

$siswa_regNo = DB::table('upload_tbpendaftaran$')
    ->select('Reg_No', 'F_Name',
        'N_Name',
        'Place',
        'Birthday',
        'BirthID',
        'Gender',
        'Bloods',
        'Glass',
        'Height',
        'Weight',
        'Child_No',
        'Child_Qty',
        'School_Code',
        'School_Name',
        'School_Address',
        'School_Distric',
        'School_Distric_Desc',
        'School_City',
        'School_City_Desc',
        'School_Province',
        'School_Province_Desc',
        'School_NEM_Avg',
        'School_STTB',
        'Certificate_ID',
        'Stay',
        'Stay_Address',
        'Stay_RT',
        'Stay_RW',
        'Stay_Village',
        'Stay_Distric',
        'Stay_Distric_Desc',
        'Stay_City',
        'Stay_City_Desc',
        'Stay_Province',
        'Stay_Province_Desc',
        'Stay_Phone',
        'Stay_HP',
        'Stay_Postal',
        'Stay_Longitude',
        'Stay_Latitude',
        'Home_Address',
        'Home_RT',
        'Home_RW',
        'Home_Village',
        'Home_Distric',
        'Home_Distric_Desc',
        'Home_City',
        'Home_City_Desc',
        'Home_Province',
        'Home_Province_Desc',
        'Home_Postal',
        'Home_Phone',
        'Home_HP',
        'Home_HP2',
        'Home_Longitude',
        'Home_Latitude',
        'EMail',
        'Email_Parent',
        'Email_Parent2',
        'ID_Cards',
        'Distance',
        'Time_HH',
        'Time_MM',
        'TransportID',
        'TransportDesc',
        'Remarks',
        'NISN',
        'ExamUNNo')
    ->orderBy('Reg_No')
    ->get();

foreach ($siswa_regNo as $s) 
    DB::table('Registration')
        ->where('Reg_No', $s->Reg_No)
        ->update([
            'F_Name' => $s->F_Name,
            'N_Name' => $s->N_Name,
            'Place' => $s->Place,
            'Birthday' => $s->Birthday,
            'BirthID' => $s->BirthID,
            'Gender' => $s->Gender,
            'Religion' => $s->Religion,
            'Citizen' => $s->Citizen,
            'FamilyID' => $s->FamilyID,
            'Bloods' => $s->Bloods,
            'Glass' => $s->Glass,
            'Height' => $s->Height,
            'Weight' => $s->Weight,
            'Child_No' => $s->Child_No,
            'Child_Qty' => $s->Child_Qty,
            'School_Code' => $s->School_Code,
            'School_Name' => $s->School_Name,
            'School_Address' => $s->School_Address,
            'School_Distric' => $s->School_Distric,
            'School_Distric_Desc' => $s->School_Distric_Desc,
            'School_City' => $s->School_City,
            'School_City_Desc' => $s->School_City_Desc,
            'School_Province' => $s->School_Province,
            'School_Province_Desc' => $s->School_Province_Desc,
            'School_NEM_Avg' => $s->School_NEM_Avg,
            'School_STTB' => $s->School_STTB,
            'Certificate_ID' => $s->Certificate_ID,
            'Stay' => $s->Stay,
            'Stay_Address' => $s->Stay_Address,
            'Stay_RT' => $s->Stay_RT,
            'Stay_RW' => $s->Stay_RW,
            'Stay_Village' => $s->Stay_Village,
            'Stay_Distric' => $s->Stay_Distric,
            'Stay_Distric_Desc' => $s->Stay_Distric_Desc,
            'Stay_City' => $s->Stay_City,
            'Stay_City_Desc' => $s->Stay_City_Desc,
            'Stay_Province' => $s->Stay_Province,
            'Stay_Province_Desc' => $s->Stay_Province_Desc,
            'Stay_Phone' => $s->Stay_Phone,
            'Stay_HP' => $s->Stay_HP,
            'Stay_Postal' => $s->Stay_Postal,
            'Stay_Longitude' => $s->Stay_Longitude,
            'Stay_Latitude' => $s->Stay_Latitude,
            'Home_Address' => $s->Home_Address,
            'Home_RT' => $s->Home_RT,
            'Home_RW' => $s->Home_RW,
            'Home_Village' => $s->Home_Village,
            'Home_Distric' => $s->Home_Distric,
            'Home_Distric_Desc' => $s->Home_Distric_Desc,
            'Home_City' => $s->Home_City,
            'Home_City_Desc' => $s->Home_City_Desc,
            'Home_Province' => $s->Home_Province,
            'Home_Province_Desc' => $s->Home_Province_Desc,
            'Home_Postal' => $s->Home_Postal,
            'Home_Phone' => $s->Home_Phone,
            'Home_HP' => $s->Home_HP,
            'Home_HP2' => $s->Home_HP2,
            'Home_Longitude' => $s->Home_Longitude,
            'Home_Latitude' => $s->Home_Latitude,
            'EMail' => $s->EMail,
            'Email_Parent' => $s->Email_Parent,
            'Email_Parent2' => $s->Email_Parent2,
            'ID_Cards' => $s->ID_Cards,
            'Distance' => $s->Distance,
            'Time_HH' => $s->Time_HH,
            'Time_MM' => $s->Time_MM,
            'TransportID' => $s->TransportID,
            'TransportDesc' => $s->TransportDesc,
            'Remarks' => $s->Remarks,
            'NISN' => $s->NISN,
            'ExamUNNo' => $s->ExamUNNo
        ]);

我很困惑,请帮忙。

【问题讨论】:

你得到一个错误的行号,查看问题之前的行 错误在这一行 " ->update(['F_Name' => $s->F_Name, " 你的第一个表名是upload_tbpendaftaran$???,因为你的代码是$siswa_regNo = DB::table('upload_tbpendaftaran$'),我的意思是表名最后的美元符号是什么。 【参考方案1】:

在第二个FOREACH,当您从DB 获取数据时,您应该在最后添加->first()->get()

foreach ($siswa_regNo as $s) 
    DB::table('Registration')
        ->where('Reg_No', $s->Reg_No)
        ->first()  // this line added
        ->update([
            'F_Name' => $s->F_Name,
            'N_Name' => $s->N_Name,
            'Place' => $s->Place,
            .
            .
            .
        ]);

或者如果你想使用->get(),你也应该使用foreach...

【讨论】:

以上是关于使用 foreach 更新 Laravel 错误:语法错误,意外 ' ' (T_STRING),期待 ']'的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 js 在刀片 laravel 中的 foreach 上更新变量

在 laravel 错误中为 foreach() 提供的参数无效(查看:我看不到 $value

Laravel 在 spatie-permission 的 foreach 循环中给出错误

laravel mysql数据库同一页面多表单提交表不更新

使用 vue js 时在 laravel 中为 foreach 提供的参数无效

如何在 Laravel 8 中使用 foreach 从多选中保存数据?