将SQL的CONVERT(binary,?)与Laravel的whereRaw一起使用

时间:2018-09-27 19:08:59

标签: sql-server laravel binary type-conversion sqlsrv

我正在使用Laravel's raw query从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 :(得分:0)

必须反过来做。

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

仍然不知道为什么它不起作用。