我试图找到一种在PHP中创建一个函数的方法,它将包装参数中给出的SQL查询,这样我就可以在函数中阻止SQL注入,然后可以在整个应用程序中多次调用它。而不是为每个查询重复相同的语句。
例如,假设我有以下PHP代码准备并执行查询以防止SQL注入:
$name = "$_POST['name']";
$stmt = $db->prepare('SELECT * FROM test_table WHERE test_name = ?');
$stmt->execute(array($name));
对于每个查询,我的应用程序需要重复这些语句。我想要一种方法来防止每次都这样做,而我只是想每次都调用一个函数并传入查询。
如果我需要在我的应用程序中进行查询,我将如何将其包装在一个函数中,因为我事先并不知道需要参数化的参数数量。 / strong>上面的查询有一个参数化查询,但每个查询可能有不同的数量。
注意:
我正在使用PDO
语句
这样的事情:
public function query($query)
{
// statements here
}
将查询作为参数传入。
有谁知道我怎么做到这一点?
答案 0 :(得分:0)
目前,我正在使用可能适合您的此类内容。
示例:
function superQuery($query, $params, $type = null) {
$pdo = new pdo(...);
$stmt = $pdo->prepare($query);
$stmt->execute($params);
if ($type === "select") {
$result = $stmt->fetchAll();
return $result;
} else {
return $stmt;
}
$query = "SELECT row FROM column WHERE row1 = ? AND row2 = ?";
$params = [$row1, $row2];
$type = "select";
$row = selectQuery($query, $params, $type);
// returns multidimensional array or true/false depending if argument is used //
有很多方法可以做到。如果要返回计数而不是结果集,也可以传递count参数。但希望这能指出你正确的方向并给你一些想法。