如何编写一个带有任意数量参数的PHP函数?

时间:2015-02-09 22:10:51

标签: php function

我试图找到一种在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
    }

将查询作为参数传入。

有谁知道我怎么做到这一点?

1 个答案:

答案 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参数。但希望这能指出你正确的方向并给你一些想法。