我非常确信这是不可能的,但以防万一:
如何为IN
运算符绑定正确的(列表)参数?
SELECT foo FROM bar WHERE baz IN ('cow', 'chicken');
不幸的是,这不起作用:
list = ['cow', 'chicken']
db.execute('SELECT foo FROM bar WHERE baz IN ?', list)
参数绑定不仅比直接插值更漂亮,而且更安全:使用它的主要原因之一是阻止臭名昭著的Bobby Tables。但是,您是否坚持手动转义 IN 参数?
list = ['cow', 'chicken']
sqllist = list.map { |el| "'#{SQLite3::Database.quote(el)}'" }.join(',')
db.execute('SELECT foo FROM bar WHERE baz IN (#{sqllist})')
(示例是带有 sqlite3 gem 的 Ruby,但该问题实际上适用于为您进行参数绑定的所有语言/库。)