我必须使用循环来处理一些查询,并且所有查询都是相同的,除了一个不使用参数的查询,其他查询则使用:
$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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句