【发布时间】:2019-08-17 22:02:13
【问题描述】:
我正在使用PDO prepared statements 执行两个查询:
SELECT count(*) FROM vocabulary WHERE `type` = :type AND `lesson` = :lesson;
SELECT * FROM vocabulary WHERE `type` = :type AND `lesson` = :lesson limit 100;
获取计数的第一个查询按预期工作,我得到了行数。
$stmt = $this->connection->prepare($sql);
foreach ($params as $key => $value)
$stmt->bindValue(":" . $key, $value, PDO::PARAM_STR);
$stmt->execute();
$count = $stmt->fetchColumn();
$sql .= " limit $limit;";
$sql = str_replace("count(*)", $columns, $sql);
$stmt = $this->connection->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_CLASS, $class);
但是在执行第二个查询时我得到:
SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
因此,我想知道,如果我有多个参数完全相同的查询,是否需要再次使用绑定相同的参数
foreach ($params as $key => $value)
$stmt->bindValue(":" . $key, $value, PDO::PARAM_STR);
或者如果有一种方法可以只绑定一次参数。
【问题讨论】:
-
您的
$stmt =重置该值,使其不再被绑定。您可以构建一个数组并将其传递给两个execute调用。
标签: php pdo prepared-statement