我根据某些条件(例如操作类型或某个值的存在)通过向INSERT
语句添加字段来构建查询。但是随后我必须为execute
具有不同参数列表的不同 DBI 分支,如下所示:
if ($x) {$extraFields .= ' , X'; $extraValues= ',? '}
if ($y) {$extraFields .= ' , Y, Z'; $extraValues= ',?, ? '}
my $theBasicQuery = "INSERT INTO sometable (A, B, $extraFields) VALUES (?, ? $extraValues)";
$sth = $dbh->prepare($theBasicQuery) or error
# but I dont want to have to do this if for execute
if ($x) {$sth->execute(1,2,99);}
if ($y) {$sth->execute(1,2,88, 77);}
我宁愿做这样的事情:
{$sth->execute($anArrayWithDifferentParams);}
这可能吗?还是有另一种方法可以做类似的事情?