重新使用?在DBI准备

Use*_*er1 8 perl dbi

有没有办法重用DBI准备语句中使用的?请考虑以下代码:


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

改为使用这样的东西会很好:


#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);
Run Code Online (Sandbox Code Playgroud)

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

hob*_*bbs 7

这取决于你的DBD.例如,使用具有$1占位符样式的DBD :: Pg ,或者使用带有命名占位符的DBD :: Oracle bind_param,您可以完全按照自己喜欢的方式执行操作.但是使用在?DBI范围内工作的占位符的通用样式,这是不可能的.