带有Slang :: SQL的Perl6 API

时间:2016-04-13 15:29:58

标签: perl6 bailador

我正在尝试使用Bailador,DBIish和Slang :: SQL在Perl6中执行API但是当我尝试使用时

sql select * from user where nom='"$name"'; do -> $row {
        "$row".say;
}

而不是

sql select * from user where nom="try"; do -> $row {
        "$row".say;
}

它不告诉我任何事情:c(显然$ name =="试试#34;) 我在互联网上搜索一小时但没有回答。我已经尝试仅使用DBIish synthaxe,但它以相同的结果结束。有人可以帮帮我:)?

2 个答案:

答案 0 :(得分:6)

你应该使用占位符是主要原因。俚语并没有引用这种类型,即使它确实引入了代码中SQL注入漏洞的入口点 - 除非你在变量中转义了引号。

而是尝试:

sql select * from user where nom = ?; with ($name) do -> $row {
    $row.say;
}

祝你的应用好运。顺便说一句,那里有一个对你的进步感兴趣的子评价https://www.reddit.com/r/perl6

答案 1 :(得分:1)

所以我尝试了Matt Oates的答案,但它没有给我任何回报(就好像它没有在DB中找到任何东西)。但我终于找到了完成这项工作的语法:

my $email = request.params<email>;
my $db = 'SELECT * FROM user WHERE email=?';
my $do = $*DB.prepare($db);
$do.execute($email);
my %row = $do.fetchrow_hashref;
return (%row);