1

我正在构建简单的查询生成器,我有两个问题:

  1. 是否可以将具有正常功能的 mysql 查询保护到与使用类似的级别->execute(array(':param:' => ...

  2. 是否可以在一个查询中使用多个变量,给它们起相同的名称(分号后面的那些),然后将它们一一绑定?

4

1 回答 1

2
  1. 如果我对您的理解正确,您想知道是否可以bindParam使用标准功能复制mysql_*功能?

    简短的回答是否定的。请完全不要使用 mysql 功能,使用mysqliorPDO因为它们为您提供真正的安全性prepared statements。它们还可以提供更好的查询性能,因为 SQL 能够针对数据库进行预先优化。

  2. 您必须分别定义每个参数(即使它是相同的值)。您也可以将一个简单的数组传递给execute()方法调用,但是您没有显式定义参数类型的选项。

在你的函数中使用这样的东西:

$name = "fred";
$statement = $pdo->prepare("SELECT id FROM contacts WHERE first_name = ? OR last_name = ?");
for ($x = 1; $x <= 2; $x++) {
  $statement->bindParam($x, $name, PDO::PARAM_STR);
}
$statement->execute();
于 2012-10-09T20:45:13.233 回答