有没有一种方法可以重用DBI prepare语句中使用的?。考虑以下代码:


$sth=$dbh->prepare("INSERT INTO mytable(a,b,c) SELECT ?,B(?),C(?)");
$sth->execute($a,$a,$a);

最好使用如下所示的方法:

#I'm making this up as something I hope exists
$sth=$dbh->prepare("INSERT INTO mytable(a,b,c) SELECT ?,B(?:1),C(?:1)");
$sth->execute($a);

请注意,只有一个$a传递给了execute,而不是三个。在现实生活中有没有办法做到这一点?

最佳答案

这取决于您的DBD。例如,使用具有$1样式的占位符的DBD::Pg或具有命名的占位符和bind_param的DBD::Oracle,您可以完全按照自己的意愿进行操作。但是,使用在DBI范围内均可使用的占位符的通用?样式是不可能的。

关于perl - 在DBI上重用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3180940/

10-12 05:54