微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-是否可以计算PDO准备语句中的参数数量?

我必须使用循环来处理一些查询,并且所有查询都是相同的,除了一个不使用参数的查询,其他查询则使用:

$queries = array(
  'query1' = "SELECT * FROM table_1 WHERE id=:id",
  'query2' = "SELECT * FROM table_2 WHERE id=:id",
  'query3' = "SELECT * FROM table_3"
);

$params = array(':id',1);

foreach($queries as $q) {
  $st = $pdo->prepare($q);
  if($st->execute($params)) {
    // do stuff with results
  } else {
    echo json_encode($st->errorInfo());
  }
}

这里的问题是$st-> execute($params)在没有定义参数查询上将不起作用,这就是为什么我想知道是否有可能在发送查询之前对其进行分析.

这是伪代码,只要有一个参数(:id)或没有参数,它就不管查询结构而工作.

更新,已解决

我如何应用@ Jonast92提供的解决方案:

foreach($queries as $q) {
  $st = $pdo->prepare($q);
  if($st->execute(substr_count($q,":") > 0 ? $params : null)) {
    // do stuff with results
  } else {
    echo json_encode($st->errorInfo());
  }
}

解决方法:

您可以使用substr_count来计数:的出现次数,表示要在准备好的语句上执行的参数数量.

$itemInArray = "SELECT * FROM table_1 WHERE id=:id";
$count = substr_count($itemInArray, ':'); // 1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐