PDO MySql函数接受多个参数

时间:2018-01-12 10:53:55

标签: php mysql pdo

我有一个执行Mysql查询的PDO函数。

public function run($sql, array $params = NULL) {

  $statement = $this->pdo->prepare($sql);

  if (!is_null($params)) {

    foreach ($params as $key) {

      $statement->bindParam(":n", $key);

    }

  }

  $statement->execute();

  return $statement->fetchAll(PDO::FETCH_CLASS);

}

这仅适用于单个参数(请参阅我的previous question

所以我尝试将函数中的foreach修改为

foreach ($params as $key => $value) {

  $statement->bindParam($key, $value);

}

我将查询作为

运行
$variation = $query->run(
  "SELECT url, title, sale_price
  FROM product
  where category_id = :category
  and url != :url",
  [ ":category" => $data[0]->category_id, ":url" => $filePathArray[1] ]
);

返回一个空集。

1 个答案:

答案 0 :(得分:0)

此功能不是必需的。您可以按照in the documentation for PDOStatement::execute()所解释的那样将参数数组直接传递给$statement->execute()

它与使用bindParam()一样安全,它可以防止SQL注入。

唯一的缺点是你不能指定每个参数的类型,但在大多数情况下这不是必需的,在这个例子中你还没有使用它,所以你不会丢失任何东西。