使用PDO语句时,我可以使用函数安全地插入变量吗?

时间:2014-11-12 18:22:14

标签: php mysql pdo

我有以下功能,允许我对数据库执行查询(在同一个类中指定)。

我是否需要使用bind_param函数来安全地转义这些变量?

如果没有,我如何将传递给函数的变量作为值分配给键?

public function query($dms, $col, $date, $ascDesc)
        {
            $this->stmt = $this->dbh->prepare("{$dms} {$col} FROM {$this->table} ORDER BY UNIX_TIMESTAMP({$date}) $ascDesc");
            $this->stmt->execute();
            return $this;
        }

1 个答案:

答案 0 :(得分:0)

以这种方式你可以使用这样的东西(记得只绑定值,而不是数组...以防数组使用foreach并绑定每个值):

public function query($dms, $col, $date, $ascDesc)
    {
        $this->stmt = $this->dbh->prepare("{$dms} :col FROM {$this->table} ORDER BY UNIX_TIMESTAMP(:date) :ascDesc;");
        $this->stmt->bindParam(':col', $col, PDO::PARAM_STR);
        $this->stmt->bindParam(':date', $date, PDO::PARAM_STR);
        $this->stmt->bindParam(':ascDesc', $ascDesc, PDO::PARAM_STR);
        $this->stmt->execute();
        return $this;
    }