gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:39:26 25 4
gpt4 key购买 nike

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

$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

关于php - 是否可以计算 PDO 准备语句中的参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26767929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com