SQL LIMIT:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配

时间:2015-12-29 21:27:38

标签: php pdo

我正在使用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']}%"]);

1 个答案:

答案 0 :(得分:1)

如果要填写PDO查询的参数,可以

  • 在致电bindParam()
  • 之前,使用bindValue()execute()绑定它们
  • 提供一组值作为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]);