【问题标题】:ruby-pg sanitize data before insertruby-pg 在插入前清理数据
【发布时间】:2012-06-02 11:56:15
【问题描述】:

Ruby 新手在这里。我正在尝试插入这个字符串“Lady Arabella's Scandalo...”我正在使用 ruby​​-pg 来执行此操作。但是,由于单引号,我遇到了错误,如何清理此字符串并删除所有 html 标签?有内置函数吗?

【问题讨论】:

    标签: ruby postgresql pg


    【解决方案1】:

    您可以使用escape_string 正确转义单引号:

    db = PG.connect(...)
    db.exec("insert into t (...) values ('#{db.escape_string(str)}', ...)")
    

    或使用 prepareexec_prepared 来处理准备好的语句:

    db.prepare('ins', 'insert into t (...) values ($1, ...)')
    db.exec_prepared('ins', [str, ...])
    

    【讨论】:

    • 谢谢。我用谷歌搜索到了这里。使用connection.escape_string
    • @huy Headsup, connection.escape_string 不会在字段末尾转义反斜杠。
    • @IslamAzab escape_string 只是从 PostgreSQL C 库中调用 PQescapeStringConn,所以如果它没有转义反斜杠,那么它就不需要。还是我错过了什么?
    • @muistooshort 你是对的,如果你有这样的select 'test \'::tsvector;select E'test\'; 就会出现问题。试试看。
    • @IslamAzab 似乎对我来说工作正常。你能提供一个escape_string 不能正常工作的例子吗?为什么要尝试将 E 语法与非文字字符串一起使用?您唯一使用E'...' 的情况是您必须手动输入换行符等。
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2014-01-15
    • 1970-01-01
    • 2013-06-16
    • 2010-11-19
    • 2017-05-18
    • 1970-01-01
    • 2016-04-23
    相关资源
    最近更新 更多