SQL LIMIT:PDOStatement::execute():SQLSTATE[HY093]:参数编号无效:绑定变


SQL LIMIT: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

我正在使用PDO从php检索数据。我正在尝试使用极限函数,但遗憾的是它并没有起作用。我在论坛上搜索了类似的问题,找到了与我在下面尝试的类似的答案。但我也收到了同样的警告。我是PDO的新手。我做错什么了吗?

$limit = 5;
$users = $db->prepare("SELECT code,name from Portion where name LIKE '%$t%' LIMIT :limit");
$users->bindParam(':limit', $limit, PDO::PARAM_INT);
$users->execute(['query' => "{$_GET['query']}%"]);

当您想填写PDO查询的参数时,您可以选择

  • 在调用execute()之前,请使用bindParam()bindValue()绑定它们,或者
  • 提供一个值数组作为execute()的参数

不能混合使用它们——当您提供数组参数时,它会覆盖bindParam设置。由于将数组参数传递给execute()(尽管没有明显的原因,因为SQL中没有:query参数),:limit参数将丢失。

将您的代码更改为:

$limit = 5;
$users = $db->prepare("SELECT code,name from Portion where name LIKE CONCAT('%', :pattern, '%') LIMIT :limit");
$users->execute([':pattern' => $t, ':limit' => $limit]);