gpt4 book ai didi

mysql - 在perl中转义单引号

转载 作者:行者123 更新时间:2023-11-29 04:37:30 25 4
gpt4 key购买 nike

我有以下代码:

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 的新手,但是如何在插入之前安全地转义单引号?

最佳答案

$body = $db->quote($body) 是正确的做法,但是注意 quote 方法也加上了外引号,所以你会在你的 SQL 语句中使用 $body 而不是 '$body'

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

我发现here documents 对于编写具有某种布局的 SQL 语句很有用,以便它们可读。你的代码看起来像这样

my $body = $in{article};

my $stmt = $db->prepare(<<END_SQL);
INSERT INTO news_articles (createdate, userid, status, title, inline, content, attribution, pending)
VALUES (UNIX_TIMESTAMP(), ?, ?, ?, ?, ?, ?, ?)
END_SQL

$stmt->execute($user->{'uid'}, 0, $title, $pullquote, $body, $attr, 0);

关于mysql - 在perl中转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37601791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com