即使WHERE子句存在,也要选择所有事实

时间:2016-11-18 21:45:31

标签: sql intersystems-cache-zen

我知道这可能听起来很奇怪,我当然可以解决我的问题。我在服务器端代码上使用SQL,语句类似于以下内容:

SELECT myCol FROM mytable WHERE myCol2=url_parameter

url_parameter是通过URL传递的字符串。有没有办法将url_parameter设置为某些内容,但仍能获得表格中的所有事实?

2 个答案:

答案 0 :(得分:1)

不应该;如果有,那么服务器端的编写方式将允许SQL注入攻击,这可能是一个比你想要解决的问题更大的问题。

如果您能够修改服务器端代码,则可以通过运行不具有WHERE条件的查询的变体来响应某些参数值或参数值组合。或者还有其他选择......但是你已经说过你可以解决它,所以我认为你有其中一个想法。

答案 1 :(得分:1)

处理此问题的常用方法是使用如下所示的查询:

SELECT myCol
FROM mytable
WHERE myCol2 = url_parameter OR url_parameter IS NULL;  -- or url_parameter = '';

如果要更改SQL字符串而不是传递参数,则可以在要获取所有值时插入值myCol2(不带引号)。但是,您应该使用参数。