Использование SQL CONVERT (бинарный,?) С Laravel whereRaw - PullRequest
0 голосов
/ 27 сентября 2018

Я использую необработанный запрос Laravel для подключения и извлечения записей из SQL Server.

$rfaccounts = DB::connection('sqlsrv')->table('tbl_rfaccount')
            ->whereRaw("id = CONVERT(binary, 'acc1')")
            ->get();

Это работает и успешно возвращает запись базы данных, но это опасно, потому что мне нужно заменить«acc1» с отправленным полем формы, поэтому он становится восприимчивым к SQL-инъекции.

$rfaccounts = DB::connection('sqlsrv')->table('tbl_rfaccount')
            ->whereRaw("id = CONVERT(binary, '?')", 'acc1')
            ->get();

Но это не сработает ... и удаляет '' из '?'SQL просто выдает ошибку, говорящую о том, что не может найти столбец "acc1".

Итак, как мне это сделать?

1 Ответ

0 голосов
/ 27 сентября 2018

Пришлось сделать это наоборот.

$rfaccounts = DB::connection('sqlsrv')->table('tbl_rfaccount')
            ->whereRaw("CONVERT(varchar, id) = ?", 'acc1')
            ->get();

Все еще не знаю, почему это не сработало.

...