如何使用select with in运算符和value from变量?

dddzy1tm  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(318)

这个问题在这里已经有答案了

将vbscript字符串列表传递给sql“in”运算符(5个答案)
去年关门了。
我想从表'products'中选择所有城市所在的地方(varberg,falkenberg),如果我使用下面的,它就可以工作,但是如果我有一个变量中的城市,我可以´不能让它工作?我用的是mysql数据库。

sql = "SELECT * FROM products where city in ('Varberg','Falkenberg')" 
set rs = conn.Execute (sql)

所以如果我用这个,它就不起作用了。

cities=request.querystring(cities)

所以变量变成这样

cities="Varberg,Falkenberg"

sql = "SELECT * FROM products WHERE city IN ('"& cities &"')" 
set rs = conn.Execute (sql)
pes8fvy9

pes8fvy91#

生成的查询缺少两个引号。生成查询是

SELECT * FROM products where city in ('Varberg,Falkenberg')

而不是

SELECT * FROM products where city in ('Varberg','Falkenberg')

顺便说一句:未经验证和适当消毒,切勿使用用户提供的参数。

waxmsbnn

waxmsbnn2#

使用变量创建的sql语句将

SELECT * FROM products WHERE city IN ('Varberg,Falkenberg')

和你要找的不同:

SELECT * FROM products where city in ('Varberg','Falkenberg')

您需要调整代码逻辑,为变量生成正确的列表。由于缺少单引号,您的变量包含一个单值列表。您需要添加引号,以便变量包含多值列表。
ps—您的代码对sql注入也非常开放。您应该使用参数化查询。

相关问题