gpt4 book ai didi

php - 如何将参数传递给动态查询?

转载 作者:行者123 更新时间:2023-11-29 02:52:10 25 4
gpt4 key购买 nike

我有一个不是一直不变的查询...,实际上它会根据某些因素生成。有时是这样的:

select * from table1 where id = :id

有时它可能是这样的:

select * from table1 where id = :id
union all
select * from table2 where id = :id

有时它可能是这样的:

select * from table1 where id = :id
union all
select * from table2 where id = :id
union all
select * from table3 where id = :id

已经:到目前为止,我使用的是 PHP 5.2.6 版,完全没问题。我的意思是,我只传递了一次 :id 参数,我可以在查询中多次使用它。就是这样:

$stm->bindValue(':id', $id, PDO::PARAM_INT);

这 ^ 对上述所有查询都有好处。


现在:我已经更新了我的 PHP 版本(我当前的 PHP 版本是 5.6.8)。嗯,如你所知,在新版本中,I cannot do that like former .每次我想在查询中使用它时,我都需要传递一个单独的参数。像这样:

对于查询1:

$stm->bindValue(':id', $id, PDO::PARAM_INT);

对于查询2:

$stm->bindValue(':id1', $id, PDO::PARAM_INT);
$stm->bindValue(':id2', $id, PDO::PARAM_INT);

对于查询 3:

$stm->bindValue(':id1', $id, PDO::PARAM_INT);
$stm->bindValue(':id2', $id, PDO::PARAM_INT);
$stm->bindValue(':id3', $id, PDO::PARAM_INT);

鉴于我不知道需要将:id 参数传递给查询多少次(因为我的查询是动态的),我该如何解决这个问题?

最佳答案

您可以将所有 id 值存储在一个数组中并对其进行迭代。

只要所有值都是同一类型 (int) 并且您的占位符的形式为 :idNUMBER:

$ids = array('what','ever');
for($c=0;$c<count($ids);$c++) {
$stm->bindValue(':id' . ($c+1), $ids[$c], PDO::PARAM_INT);
}

不是很优雅,但可以胜任。

http://www.pontikis.net/blog/dynamically-bind_param-array-mysqli 中描述了一种甚至可以处理不同类型的解决方案。

关于php - 如何将参数传递给动态查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34546673/

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