2

次のようなバインド パラメータの使用には、何らかの (アンチ?) パターンがあるようです。

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

つまり、本当に必要なのは$var1、クエリで値を 2 回使用することです。$var1バインド パラメータ リストで 2 回指定しないようにする方法はありますか?

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

使用できますが、2回指定する必要があります

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

1 つの方法は、次のように、ドライバーがサポートしている場合、番号付きのプレースホルダーを使用することです。

$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 に答える