SQL语句中的字符串转义

3 投票
1 回答
3273 浏览
提问于 2025-04-17 10:39

我正在尝试执行以下查询:

cursor.execute("SELECT DISTINCT(provider) FROM raw_financials 
                WHERE vendor_id="%s" OR title='%'", (vendor_id, title))

我的问题是,标题可以是任何内容,比如它可以是 "你好,先生",'是的'他回答。所以当我这样做的时候,可能会得到一个(不好的)返回值,比如 An Elf\\'s Story(这会引发一个SQL错误)。

我该如何正确地引用SQL语句和标题呢?

1 个回答

5

别自己去加引号;你的数据库驱动会帮你处理这些事情:

cursor.execute("SELECT DISTINCT(provider) FROM raw_financials 
            WHERE vendor_id = %s OR title = %s", (vendor_id, title))

补充说明:上面提到的 %s 是占位符,表示参数(vendor_idtitle)应该放在哪里。MySQLdb 使用 %s 作为占位符,但有些其他的驱动可能用 ?。你可能需要根据你的驱动来调整我上面的代码,使用合适的占位符。

撰写回答