次のようなバインド パラメータの使用には、何らかの (アンチ?) パターンがあるようです。
$dbh->do(
'select foo from bar where baz > ? and baz < ? + 1',
undef,
$var1, $var1
)
つまり、本当に必要なのは$var1
、クエリで値を 2 回使用することです。$var1
バインド パラメータ リストで 2 回指定しないようにする方法はありますか?
次のようなバインド パラメータの使用には、何らかの (アンチ?) パターンがあるようです。
$dbh->do(
'select foo from bar where baz > ? and baz < ? + 1',
undef,
$var1, $var1
)
つまり、本当に必要なのは$var1
、クエリで値を 2 回使用することです。$var1
バインド パラメータ リストで 2 回指定しないようにする方法はありますか?
まず、実際の使い方は
$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
);
使用できますが、2回指定する必要があります
$dbh->do(
'select foo from bar where baz > ? and baz < ? + 1',
undef,
($var1)x2
);
1 つの方法は、次のように、ドライバーがサポートしている場合、番号付きのプレースホルダーを使用することです。
$dbh->do(
'select foo from bar where baz > ?1 and baz < ?1 + 1',
undef,
$var1
)
やりたいことは、名前付きパラメーターを使用することです。PDOなどの特定のライブラリはこれをサポートしています。