繁体   English   中英

转义和Perl DB查询

[英]Escaping & in perl DB queries

我需要处理数据库中的某些记录,并将它们的值写入另一个表。 其中一些值在字符串中带有“&”,即“ Me&You”。 缺少查找所有这些值并将\\放在任何&之前的方式,如何将这些值插入到一个没有&对oracle造成阻塞的表中?

使用占位符。 与其在您的SQL语句中添加'$who' ,不如准备一个? 在那里,然后绑定$ who,或者以$ who作为适当的参数执行。

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

这比自己尝试更安全,更快捷。 (DBI中有一个“ quote”方法,但是比这更好。)

绝对不需要重新发明轮子。 如果您使用的是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模块)已经过广泛的测试和实际使用。 让它担心如何将您的文本插入数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM