【发布时间】:2016-09-29 04:34:16
【问题描述】:
我有以下关于 PDO 的问题:
如果我要执行多个查询,每次调用 prepare 时都需要使用 bindParam 方法吗?
例子:
$connection->prepare( "SELECT * FROM table WHERE y = :y" );
$connection->bindParam( ":y", $y );
$connection->prepare( "SELECT * FROM table2 WHERE y = :w" );
$connection->bindParam( ":w", $w );
或者我可以使用以下方法做得更好:
$connection->bindParam( ":y", $y );
$connection->bindParam( ":w", $w );
$connection->prepare( "SELECT * FROM table WHERE y = :y" );
$connection->prepare( "SELECT * FROM table2 WHERE y = :w" );
或者:
$connection->prepare( "SELECT * FROM table WHERE y = :y" );
$connection->prepare( "SELECT * FROM table2 WHERE y = :w" );
$connection->bindParam( ":y", $y );
$connection->bindParam( ":w", $w );
哪种顺序和什么是可能的?
【问题讨论】:
-
您不会在单次执行时执行多个查询。您需要每个查询,绑定参数并为每个查询单独执行
-
这些都不行。
prepare的返回是一个准备好的语句。bindParam是与 statement 关联的方法,而不是与 connection 关联的方法。当调用语句execute方法时,将评估绑定到占位符的变量的值。我建议您查看 PDO 文档以获取示例。 -
如果您需要使用相同的参数执行多个查询,这意味着您的数据库设计很可能是错误的。只需为所有类似数据创建一个表,因此您只需要运行一个查询即可。
-
如果绑定每个参数的工作量很大,您可以将带有参数的数组传递给
stmt的execute方法