我有一个查询,它不是一直都是......,实际上它会根据一些因素生成。它有时是这样的:如何将参数传递给动态查询?
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。每次我想在查询中使用它时,都需要传递一个单独的参数。像这样:
对于QUERY1:
$stm->bindValue(':id', $id, PDO::PARAM_INT);
对于QUERY2:
$stm->bindValue(':id1', $id, PDO::PARAM_INT);
$stm->bindValue(':id2', $id, PDO::PARAM_INT);
对于QUERY3:
$stm->bindValue(':id1', $id, PDO::PARAM_INT);
$stm->bindValue(':id2', $id, PDO::PARAM_INT);
$stm->bindValue(':id3', $id, PDO::PARAM_INT);
所以因为我不知道有多少次我需要通过:id
参数到查询(因为我的查询是动态的),我该如何解决这个问题?
描述,您可以使用[PDOStatement对象:: debugDumpParams(http://php.net/manual/en/pdostatement.debugdumpparams.php)找到你的参数,正则表达式名称出来,并使用它们在bindValue – zedfoxus
@zedfoxus老实说,我读了你连接了两次,但我仍然不明白那个函数做了什么...... – stack
让我看看我是否可以用你的类似查询来构建一个例子来帮助你更好地理解它。 – zedfoxus