我有以下代码
my $db = DBI->connect(
"dbi:SQLite:data.db", "", "",
{ RaiseError => 1, AutoCommit => 1, PrintError => 0 }
);
my $row = $db->selectall_arrayref(
"SELECT * FROM something WHERE name=\'$hash->{name}\'");
print Dumper $row;
如何对my $sql = $db->prepare("......"); $sql->execute($hash->{name});
执行相同操作,以便正确转义并在$row
中获取所选数据?
答案 0 :(得分:4)
您似乎在寻找有关bind values的信息:
my $row = $db->selectall_arrayref(
"SELECT * FROM something WHERE name=?",
{},
$hash->{name}
);
这可以一次性准备和执行。
您也可以单独准备和执行:
my $sth = $db->prepare("SELECT * FROM something WHERE name=?");
后:
$sth->execute($hash->{name});
my $rows_ref = $sth->fetchall_arrayref;
您应该避免使用SELECT *
并阅读Statement Handle Methods in perldoc DBI上的部分。