【问题标题】:How can I correctly insert data containing special characters into a database field using Perl and DBI?如何使用 Perl 和 DBI 将包含特殊字符的数据正确插入到数据库字段中?
【发布时间】:2011-03-10 18:40:38
【问题描述】:

我有一个表单,与此站点上的发布问题/评论不同,我想发布到数据库中的某个字段。

但是,如果有人在哪里放置特殊字符(例如 @#;"|)失败或没有正确插入。有没有办法在 Perl 不尝试将某些字符视为运算符的情况下将所述数据插入数据库?

【问题讨论】:

标签: database perl textarea dbi


【解决方案1】:

您可以使用quote 数据库句柄方法。引用文档:

报价

$sql = $dbh->quote($value);
$sql = $dbh->quote($value, $data_type);

引用字符串文字以用作 SQL 语句中的文字值, 通过转义包含的任何特殊字符(例如引号) 在字符串内并添加所需类型的外引号 标记。

$sql = sprintf "SELECT foo FROM bar WHERE baz = %s", $dbh->quote("Don't");

更好的做法是使用占位符和绑定值:

$dbh->do("INSERT INTO foo VALUES(?)", undef, "@#;|");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-27
    • 2011-02-04
    • 2016-02-18
    • 2012-03-24
    • 2020-08-30
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多