pdo mysql函数接受多个参数

b4qexyjb  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(317)

下面是执行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);

}

这只适用于单个参数(请参阅我的上一个问题)
所以我试着修改函数中的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] ]
);

它返回一个空集。

ryhaxcpt

ryhaxcpt1#

此功能不是必需的。可以将参数数组直接传递给 $statement->execute() 如pdostatement::execute()文档中所述。
它和使用一样安全 bindParam() ,它同样可以防止sql注入。
唯一的缺点是不能指定每个参数的类型,但在大多数情况下这不是必需的,在本例中,您没有使用它,因此不会丢失任何内容。

相关问题