我有以下代码:
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很新,但是如何在插入之前安全地转义单引号?
答案 0 :(得分:4)
$body = $db->quote($body)
是执行此操作的正确方法,但请注意quote
方法还会添加外引号,因此您只需在SQL语句中使用$body
而不是{ {1}}
但是,将'$body'
与占位符一起使用是迄今为止最好的方法。它为您提供必要的引用,并允许使用不同的prepare
参数多次重复使用预准备语句
我发现 here documents 对于编写具有一些布局的SQL语句非常有用,因此它们是可读的。您的代码看起来像这样
execute