2013-03-14 85 views
2

似乎有一個(防?)模式的東西在使用這樣的綁定參數:相同的值可以在查詢中綁定多次嗎?

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

即什麼是真正想要的是在查詢中使用的$var1值的兩倍。有沒有辦法避免在綁定參數列表中兩次指定$var1

回答

3

首先,使用實際上是

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

除非你DBD支持positional or named placeholders

$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 
); 
2

一種方法可能是使用編號佔位符,如果您的驅動程序支持它們,如:

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