Может ли одно и то же значение быть связано более одного раза в запросе?
Кажется, в использовании параметров связывания есть что-то вроде (анти?) Шаблона:
$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 не поддерживает позиционные или именованные заполнители,
$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
);
Одним из способов может быть использование пронумерованных заполнителей, если ваш драйвер их поддерживает, например:
$dbh->do(
'select foo from bar where baz > ?1 and baz < ?1 + 1',
undef,
$var1
)
То, что вы хотите сделать, это использовать именованный параметр. Некоторые библиотеки, такие как PDO, поддерживают это.