Perl 的 DBI 是否有与 PHP 的 mysql_real_escape_string() 等效的函数?
Could some tell me if there is a function which works the same as PHP's mysql_real_escape_string()
for Perl from the DBI module?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您应该使用占位符和绑定值。
You should use placeholders and bind values.
不。逃脱。 SQL。
不。引用。 SQL。
使用 SQL 占位符/参数 (
?
)。 SQL语句的结构和占位符表示的数据值完全分开发送到数据库,因此(除非数据库引擎或DBD模块中存在错误)绝对不可能将数据值解释为SQL命令。作为一个附带的好处,如果您重复使用 SQL 语句(它只需要准备一次),使用占位符也会更有效,而如果您不重复使用占位符,效率也不会降低(如果您不显式调用准备,它仍然会得到在执行查询之前隐式调用)。
Don't. Escape. SQL.
Don't. Quote. SQL.
Use SQL placeholders/parameters (
?
). The structure of the SQL statement and the data values represented by the placeholders are sent to the database completely separately, so (barring a bug in the database engine or the DBD module) there is absolutely no way that the data values can be interpreted as SQL commands.As a side benefit, using placeholders is also more efficient if you re-use your SQL statement (it only needs to be prepared once) and no less efficient if you don't (if you don't call prepare explicitly, it still gets called implicitly before the query is executed).
喜欢引用吗?
如果您担心的话,我还建议您阅读 DBD::MySQL 的文档utf8。
Like quote?
I would also recommend reading the documentation for DBD::MySQL if you are worried about utf8.
来自 http://www.stonehenge.com/merlyn/UnixReview/col58.html:
From http://www.stonehenge.com/merlyn/UnixReview/col58.html :
数据库处理方法“quote”
http://metacpan.org/pod/DBI#quote
Database Handle Method "quote"
http://metacpan.org/pod/DBI#quote