Я пытался сохранить данные с помощью DB :: raw функции mysql CONCAT, но я застрял и не могу сохранить один раз, если ввод, я полагаю, является вводом специальных символов. Ниже приведен мой код.
$sample_input = `from mobile$#@@hggg$_-++?!;:hh:'"#1f`;
$histCon = 'CONCAT(history, "'.$sample_input.'" Updated from [E] on 2020-03-19 20:09:50 by: nix")';
$model = ModelTable::query()->where('encounter_nr', $enc_no)->first();
$model->final_diag = $sample_input;
$model->other_diag = 'sample others value';
$model->modify_date = Carbon::now()->toDateTimeString();
$model->modify_id = $personelUsername;
$model->history = DB::raw($histCon);
$res = $model->save();
, но я продолжаю получать эту ошибку
"SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '") where `encounter_nr` = ?' at line 2 (SQL: update `modelTable` set `final_diagnosis` = from mobile$#@@hggg$_-++?!;:hh:'"#1f, `modify_date` = 2020-03-19 20:09:50, `history` = CONCAT(history, "Final Diagnosis: from mobile$#@@hggg$_-++?!;:hh:'"#1f Updated from [E] on 2020-03-19 20:09:50 by: nix ↵") where `encounter_nr` = ?)"
Как вы можете видеть в сообщении об ошибке, где весь запрос должен быть в параметризованной форме.
Полагаю, проблема в DB :: raw, поскольку его значение содержит специальные символы и вызывает ошибку во всем eloquent Builder, так как следует реализовать безопасные значения DB :: raw-запросов, применяемые с update / вставлять транзакции Laravel красноречивым способом?
Отредактировано: я пытался применить paremetrized на DB :: raw
$histValue = "Final Diagnosis: $sample_input Updated from [E] on 2020-03-20 02:51:51 by: nix 2020-03-20 02:51:51 by: nix ";
$histCon = 'CONCAT(history, :histValue)';
$model->history = DB::raw($histCon,[
'histValue' => $histValue
]);
$res = $model->save();
, но вместо этого получил эту ошибку.
"SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters (SQL: update `seg_soa_diagnosis` set `final_diagnosis` = from mobile$#@@hggg$_-++?!;:hh:'"#1f, `other_diagnosis` = `sample others value`, `modify_date` = 2020-03-20 02:52:45, `history` = CONCAT(history, :histValue) where `encounter_nr` = 2020300091)"