逃脱&在 Perl DB 查询中
我需要操作数据库中的一些记录并将它们的值写入另一个表。其中一些值带有“&”在字符串中,即“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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用占位符。不要将
'$who'
放入 SQL 语句中,而是使用 ? 进行准备。相反,然后绑定 $who,或使用 $who 作为适当的参数执行。这比尝试自己做更安全、更快捷。 (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.This is safer and faster than trying to do it yourself. (There is a "quote" method in DBI, but this is better than that.)
这绝对是一个你不需要重新发明的轮子。如果您使用
DBI
,请不要转义输入;使用占位符。示例:
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:
The
DBD::Oracle
module (and all the otherDBD::xxxxx
modules) have undergone extensive testing and real world use. Let it worry about how to get your text inserted into the database.