我想从“产品”表中的城市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)
答案 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注入。您应该使用参数化查询。