首页 > 数据库 > mysql教程 > 如何在 SQLite 中正确处理带有绑定参数的'WHERE IN”语句?

如何在 SQLite 中正确处理带有绑定参数的'WHERE IN”语句?

Mary-Kate Olsen
发布: 2025-01-03 00:31:39
原创
904 人浏览过

How to Properly Handle `WHERE IN` Statements with Bind Parameters in SQLite?

在 SQLite 中处理“WHERE _ IN ___”语句

使用 WHERE IN SQLite 中的语句,确保语句的正确构造至关重要,以避免错误。当提供的绑定数量与预期数量不匹配时,就会出现问题,从而导致编程错误。

要解决此问题,您需要修改语句以包含正确数量的问号 (?),如下所示参数。例如:

statement = "SELECT * FROM tab WHERE obj IN ({0})".format(', '.join(['?'] * len(list_of_vars)))
登录后复制
这里,我们使用

join([?]*len(list_of_vars))_ 生成逗号分隔的问号字符串,从而允许正确绑定参数值。例如,如果 _list_of_vars 包含 ['foo', 'bar'],则语句变为:

"SELECT * FROM tab WHERE obj IN (?, ?)"
登录后复制
现在,您可以通过传递

list_of_vars 作为执行此语句参数值:

c.execute(statement, list_of_vars)
登录后复制
虽然可能存在替代方法,但建议使用绑定参数来防止 SQL注入攻击。对于大量列表,使用临时表来存储值并对其进行连接可能会提高效率。

以上是如何在 SQLite 中正确处理带有绑定参数的'WHERE IN”语句?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板