使用 SQL 的 CONVERT(binary, ?) 和 Laravel 的 whereRaw

Using SQL's CONVERT(binary, ?) with Laravel's whereRaw

我正在使用 Laravel's raw query 连接 SQL 服务器并从中检索记录。

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

有效并成功 returns 数据库记录,但它很危险,因为我需要用提交的表单字段替换 "acc1",这样它就容易受到 SQL 注入。

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

但这不起作用...并从“?”中删除“ ” SQL 只是抛出一个错误,说找不到列 "acc1"。

那么我该怎么做呢?

必须反过来做。

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

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