逃脱&在 Perl DB 查询中

发布于 2024-12-10 13:21:30 字数 122 浏览 0 评论 0原文

我需要操作数据库中的一些记录并将它们的值写入另一个表。其中一些值带有“&”在字符串中,即“Me &”你'。如果没有找到所有这些值并在任何 & 之前放置 \,如何将这些值插入到表中而不会被 & 阻塞?

I need to manipulate some records in a DB and write their values to another table. Some of these values have an '&' in the string, i.e. 'Me & You'. Short of finding all of these values and placing a \ before any &'s, how can insert these values into a table w/o oracle choking on the &?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

计㈡愣 2024-12-17 13:21:30

使用占位符。不要将 '$who' 放入 SQL 语句中,而是使用 ? 进行准备。相反,然后绑定 $who,或使用 $who 作为适当的参数执行。

my $sth = $dbh->prepare_cached('INSERT INTO FOO (WHO) VALUES (?)');
$sth->bind_param(1, $who);
my $rc = $sth->execute();

这比尝试自己做更安全、更快捷。 (DBI中有一个“引用”方法,但这比那个更好。)

Use placeholders. Instead of putting '$who' in your SQL statement, prepare with a ? there instead, and then either bind $who, or execute with $who as the appropriate argument.

my $sth = $dbh->prepare_cached('INSERT INTO FOO (WHO) VALUES (?)');
$sth->bind_param(1, $who);
my $rc = $sth->execute();

This is safer and faster than trying to do it yourself. (There is a "quote" method in DBI, but this is better than that.)

跨年 2024-12-17 13:21:30

这绝对是一个你不需要重新发明的轮子。如果您使用 DBI,请不要转义输入;使用占位符。

示例:

my $string = "database 'text' with &special& %characters%";
my $sth = $dbh->prepare("UPDATE some_table SET some_column=?
                         WHERE some_other_column=42");
$sth->execute($string);

DBD::Oracle 模块(以及所有其他 DBD::xxxxx 模块)都经过了广泛的测试和实际使用。让它关心如何将文本插入数据库。

This is definitely a wheel you don't need to reinvent. If you are using DBI, don't escape the input; use placeholders.

Example:

my $string = "database 'text' with &special& %characters%";
my $sth = $dbh->prepare("UPDATE some_table SET some_column=?
                         WHERE some_other_column=42");
$sth->execute($string);

The DBD::Oracle module (and all the other DBD::xxxxx modules) have undergone extensive testing and real world use. Let it worry about how to get your text inserted into the database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文