Perl / SQLite - 如何使用prepare方法选择/更新行?

时间:2010-03-08 12:06:05

标签: perl sqlite

我有以下代码

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中获取所选数据?

1 个答案:

答案 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上的部分。