当不尝试任何SQL注入修复时,该查询可以完美地工作,没有任何连接问题。只有在尝试更改查询以保护其免受注入时,语法才会中断。
我正在尝试保护此原始查询以防止SQL注入
我已经在文档中看到了(而且我知道goo'ol php中已准备好的语句),而Laravel展示了一个简单的示例,例如:
$results = DB::select('select * from users where id = :id', ['id' => 1]);
或这个
$users = DB::select('select * from users where active = ?', [1]);
我正在尝试在WHERE子句中与它对应的位置执行此操作,该语句等于从形式$ a提供的变量,但是所有尝试都破坏了语法。
所以像这样:
where author = ?, [$ba], or '$ba' or where author = :ba, ['author' => '$ba']
给出语法错误。
$ba = 'whatever';
$results =
DB::select(DB::raw("SELECT
t.id, t.AvgStyle, r.RateDesc
FROM (
SELECT
p.id, ROUND(AVG(s.Value)) AS AvgStyle
FROM posts p
INNER JOIN styles s
ON s.post_id = p.id
WHERE author = '$ba'
GROUP BY p.id
) t
INNER JOIN rates r
ON r.digit = t.AvgStyle"
));
谢谢你。注意>该问题不符合赏金资格。未经我的允许,有人总是把它放在我的每个问题上。
答案与埃弗顿所说的非常接近:只需要在右边加上一个括号即可。
那是:
, )[$ba]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句