2016-08-05 93 views
1

我知道它非常奇怪的情况,坚果我已经以某种方式进入了它。我必须通过在url中传递一些参数来连接到其他系统服务。选择*从选择

在他们的服务中,他们使用参数I pass创建一些查询。

对于我的情况,我必须通过'选择'作为参数名称,这实际上是一些类名称。所以他们最终创建查询为Select * from select 和一些条件。

在执行我收到错误响应为:

“有一个SQL查询语法错误或线 1筛选表达,位置186锯\‘选择\’,但预计 ” ..SQL:\“SELECT COL1,COL2 FROM选择为d,其中 一些条件

有人可以帮助我在此

+1

'Select'是**保留字** – Sami

回答

4

由于Select被保留总之,你必须要想在反引号字符包围逃脱它为MySQL处理您的查询:

select * from `select` 
+0

甚至更​​好,不使用保留字作为表名 –

+0

@JuanCarlosOropeza肯定,但OP写“我必须通过'选择'作为参数名称“如此我想他在这种特殊情况下不能改变它 –

+0

是的,我知道。你的解决方案没问题,但是OP可以解决潜在的问题。如果他正在调用服务,那么问题在于服务端创建查询的方式。我可以从这里感知sql注入;) –

-1

其建议不使用MySQL的保留字..但如果需要有一个解决方案..

利用这一点,它会为你工作:

select * from yourdatabasename.select 
+0

感谢您的解决方案,但是当我们在应用程序本身中创建服务或sql查询时,它可能会很有用。但在我的情况下,我打电话的是第三方服务,所以这种解决方案会产生不必要的紧耦合情况。而且我也不确定应用程序是否会与我共享架构和数据库名称。 – Sikandar