我必须使用循环来处理一些查询,并且所有查询都是相同的,除了一个不使用参数的查询,其他查询则使用:
$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 举报,一经查实,本站将立刻删除。