如何使用带有IN运算符的select和来自变量的值?

时间:2019-01-02 15:35:06

标签: mysql sql asp-classic

我想从“产品”表中的城市IN(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)

2 个答案:

答案 0 :(得分:1)

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

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

不是

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

BTW:切勿使用未经验证和适当消毒的用户提供的参数。

答案 1 :(得分:0)

使用您的变量创建的SQL语句为

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

与您要查找的内容不同:

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

您需要调整代码逻辑以为变量生成正确的列表。由于缺少单引号,因此变量包含一个值列表。您需要添加引号,以便该变量包含一个多值列表。

PS-您的代码也可以进行SQL注入。您应该使用参数化查询。