这可能是一个已经回答的问题,但我没有找到与之相关的任何内容。
我想我可能有一个独特的场景,我需要在LIMIT子句的查询中添加一个参数。 Stack Overflow考虑:
query = "SELECT * FROM `v_someview` WHERE `id` = %s LIMIT %s;"
x.execute(query,(str(id_variable),str(limit_variable))
现在又回来了:
您的SQL语法有错误;检查手册 对应于您的MariaDB服务器版本,以获得正确的语法 在第1行''5'附近
我应该使用%d还是不鼓励这种特殊用途?
注意:我绘制的这个限制变量的字段是tinyint
,因此我没有看到SQL注入攻击,但我仍然希望使用参数化查询。
使用%d停止执行并绕过catch块:
try:
query = """SELECT * FROM `v_someview` WHERE `id` = %s LIMIT %d;"""
x.execute(query,(str(id),int(l)))
except Exception as ex:
#some code
使用的库是MySQLi 变量'x'是光标 变量'id_variable'是一个id为
的int答案 0 :(得分:0)
使用以下方法解决问题:
try:
query = """SELECT * FROM `v_someview` WHERE `id` = %s LIMIT %s;"""
x.execute(query,(str(id),int(l)))
except Exception as ex:
#some code
所以我声明我将使用字符串(%s)但将该参数强制转换为int()。