sql-query中有垃圾数据,但它仍在执行,尽管不影响任何结果。为什么?

时间:2018-07-05 11:53:08

标签: mysql sql servlets jdbc sql-injection

我正在将mysql服务器用于sql。
Select * from products some_garbage_value;

Select * from products;

得出相同的值。为什么?

在some_garbage_value处输入任何内容,仍会得到相同的查询结果。

我已经创建了一个用于输入查询的表单,该表单由servlet处理,并且在创建连接后,我得到了该servlet上的查询结果。

这对我的表单来说是一件坏事吗?如果是,那么告诉我,如何摆脱此错误?这是错误吗?可以是SQL注入吗?

1 个答案:

答案 0 :(得分:2)

Select * from products some_garbage_value;

some_garbage_value不是垃圾,它是一个别名。从技术上讲,这意味着对于查询范围,您已经将products表的这种出现重新命名为some_garbage_value。如果您需要消除同一表的两次出现之间的歧义(例如,在自我联接中),或者使查询更具可读性/不言自明(或更短),这将非常有用。

等效于

Select * from products as some_garbage_value;

另请参阅MySQL reference for select

  

FROM table_references子句表示一个或多个表   检索行。如果您命名一个以上的表,那么您就是   执行联接。有关连接语法的信息,请参见   13.2.9.2,“ JOIN语法”。对于指定的每个表,您可以选择指定别名。

tbl_name [[AS] alias] [index_hint]

这不能与任何值一起使用:它必须是语法上有效的标识符。