在perl中转义单引号

时间:2016-06-02 20:45:12

标签: mysql perl escaping

我有以下代码:

my $body = $in{'article'};

这是我的数据库插入代码:

my $stmt = $db->prepare("insert into news_articles (createdate, userid, status, title, inline, content, attribution, pending) values(unix_timestamp(), $user->{'uid'}, 0, '$title', '$pullquote', '$body', '$attr', 0)");

当我在$body变量中有一个引号时似乎失败了。

我尝试使用以下方法转义它:

$body = $db->quote($body);

还有:

$body = qq($body);

我对Perl很新,但是如何在插入之前安全地转义单引号?

1 个答案:

答案 0 :(得分:4)

$body = $db->quote($body)是执行此操作的正确方法,但请注意quote方法还会添加外引号,因此您只需在SQL语句中使用$body而不是{ {1}}

但是,将'$body'与占位符一起使用是迄今为止最好的方法。它为您提供必要的引用,并允许使用不同的prepare参数多次重复使用预准备语句

我发现 here documents 对于编写具有一些布局的SQL语句非常有用,因此它们是可读的。您的代码看起来像这样

execute