2

使用这样的绑定参数似乎有某种(反?)模式:

$dbh->do(
       'select foo from bar where baz > ? and baz < ? + 1',
       undef,
       $var1, $var1
)

即真正想要的是$var1在查询中使用两次的值。有没有办法避免$var1在绑定参数列表中指定两次?

4

3 回答 3

3

一、用法其实是

$dbh->do(
       'select foo from bar where baz > ? and baz < ? + 1',
       undef,
       $var1, $var1
);

除非您的 DBD 支持位置或命名占位符

$dbh->do(
       'select foo from bar where baz > $1 and baz < $1 + 1',
       undef,
       $var1
);

你需要指定它两次,虽然你可以使用

$dbh->do(
       'select foo from bar where baz > ? and baz < ? + 1',
       undef,
       ($var1)x2
);
于 2013-03-14T23:47:16.267 回答
2

如果您的驱动程序支持它们,一种方法可能是使用编号占位符,例如:

$dbh->do(
       'select foo from bar where baz > ?1 and baz < ?1 + 1',
       undef,
       $var1
)
于 2013-03-14T23:51:06.023 回答
1

您要做的是使用命名参数。某些库(如PDO)支持此功能

于 2013-03-14T23:53:43.507 回答