我有运行SQL查询select rec_data from foo where id=?
的代码,我使用返回值执行某些操作。
我现在有一个ID @queryIDs;
数组,如何运行相同的查询并收集结果以便输入此数组中的值?感谢
答案 0 :(得分:3)
这样的事情可行:
my $sql = 'select rec_data from foo where id in (';
$sql .= join ',', ("?") x @queryIDs;
$sql .= ') order by id';
my $sth = $dbh->prepare($sql);
$sth-> execute(@queryIDs);
# rest of code will be the same as you have now
答案 1 :(得分:0)
动态SQL是不安全的。
要安全地执行相同操作,请在SQL中拆分列表,这取决于RDBMS和版本。例如,Oracle 11r2通过XMLDB有一个很好的标记化方法,可以通过简单的搜索或MODEL子句找到它们,以免那些害怕使用它的人。 SQL Server也可以使用XML。如果没有RDBMS和版本,很难建议做什么。