不尝试任何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"
));
谢谢。 注意>问题不符合赏金条件。没有我的允许,有人总是把它放在我的每一个问题上。
答案 0 :(得分:3)
答案非常接近埃弗顿所说的:它只需要向右边的一个括号。
那是:
, )[$ba]);
答案 1 :(得分:2)
您可以尝试这种方式:
<div ng-cloak ng-app="soExample">
<div ng-controller="enterLogin">
<label for="name">Name:</label>
<input ng-model="name" type="text" id="name" />
<button ng-click="doLogin()">Login</button>
</div>
<div ng-controller="displayLogin">
<p>Currently logged in as {{loginService.loggedInName}}</p>
</div>
</div>
angular.module("soExample", [])
.factory("loginService", function() {
var loggedInName = "";
return {
loggedInName: loggedInName
};
}).controller("enterLogin", ["$scope", "loginService", function($scope, loginService) {
$scope.name = "";
$scope.doLogin = function() {
loginService.loggedInName = $scope.name;
};
}])
.controller("displayLogin", ["$scope", "loginService", function($scope, loginService) {
$scope.loginService = loginService;
}]);
重要的是,如果你有其他参数,你需要尊重订单。