将url变量放在sql查询中的“where”语句之后

将url变量放在sql查询中的“where”语句之后,sql,database,tsql,coldfusion,Sql,Database,Tsql,Coldfusion,我有一个内部冷融合脚本。我想将url.variable放入sql select语句中,如下所示: SELECT * FROM table1 a JOIN table2 b ON a.id=b.id WHERE #a.url.variable# LIKE'%test%' SELECT * FROM table1 a JOIN table2 b ON a.id=b.id WHERE a.#url.variable# LIKE '%test%' 当我将变量放在单词“WHERE”后面时,我似

我有一个内部冷融合脚本。我想将url.variable放入sql select语句中,如下所示:

SELECT * 
FROM table1 a JOIN table2 b ON a.id=b.id
WHERE #a.url.variable# LIKE'%test%'
SELECT * 
FROM table1 a 
JOIN table2 b ON a.id=b.id 
WHERE a.#url.variable# LIKE '%test%'

当我将变量放在单词“WHERE”后面时,我似乎无法让它显示任何数据。

您需要按如下方式在其周围放置哈希:

SELECT * 
FROM table1 a JOIN table2 b ON a.id=b.id
WHERE #a.url.variable# LIKE'%test%'
SELECT * 
FROM table1 a 
JOIN table2 b ON a.id=b.id 
WHERE a.#url.variable# LIKE '%test%'

在这种情况下,您不能使用cfqueryparam,因此在查询中使用它之前,我还要确保URL.variable已从任何SQL注入字符中转义。

如果它是cfscipt块中的字符串,您需要:

"SELECT... " & url.variable & " LIKE..."
如果没有,请确保它包含在

<cfoutput>
    SELECT... #url.variable# LIKE...
</cfoutput>

我在真实代码中有通配符。我只是忘了将它添加到上面的示例中。它不适用于通配符。您所说的不适用是什么意思?a.url.variable的值和生成的sql值是多少?另外,我希望您正在验证和清理变量,因为直接在sql中使用它是危险的,正如Barry指出的,这可能与问题无关,但不要将url变量作为表名,否则您将使sql注入变得容易。。太糟糕了,对不起。我在原始代码中有哈希。它似乎也不起作用。它应该正常工作吗?是的,它会工作得很好。你有错误吗,是吗,你有什么错误?字段a.url.VARIABLE是否存在于a中?您问题中的哈希与Barry的哈希不同。是的,您有a.url.VARIABLE,它应该是a.url.VARIABLE