Mysql 联合表名称错误

Mysql 联合表名称错误,mysql,sql,sql-injection,Mysql,Sql,Sql Injection,我想知道如何使用工会的一方而不是另一方。请看下面的SQL查询: SELECT * FROM users WHERE username = 0 and 1=2 UNION SELECT table_name,2,3 from information_schema.tables where table_schema='sqlhack' 现在,当我将其输入到phpMyAdmin以测试查询时,我得到一个错误,即信息架构中没有名为users的表,但是当我只有以下内容时: SELECT table_

我想知道如何使用工会的一方而不是另一方。请看下面的SQL查询:

SELECT * FROM users WHERE username = 0 and 1=2 
UNION 
SELECT table_name,2,3 from information_schema.tables where table_schema='sqlhack'
现在,当我将其输入到phpMyAdmin以测试查询时,我得到一个错误,即信息架构中没有名为users的表,但是当我只有以下内容时:

 SELECT table_name,2,3 from information_schema.tables where table_schema='sqlhack'
我得到了期望的结果,即所有属于sqlhack的表。 所以我想知道如何才能使它只执行第二个select查询?或者不获取第一个SELECT查询的错误


我正在关注这个网站,但如果这有助于澄清的话,我会使用我自己的数据库。

您的第一个
选择
正在尝试从表
用户中进行选择。第二个验证表
sqlhack
是否存在;它不会验证
用户是否存在。

我通常远离信息schema.tables,因为它们很少有我想要的所有详细信息

使用特定于T-SQL的命令测试表的存在性

-- Does the schema.table exist?  NULL if not, otherwise a number
select OBJECT_ID('sqlhack.users', 'Table') as my_id

只需运行第二个查询。如果您不想使用它,为什么要包括第一个?您有用户表吗?如果有,请使用信息\u模式。users@GordonLinoff它用于sql注入,第一部分用于正常使用。我首先使用的是phpMyAdmin,所以这不是我的编码问题,而是我的代码statement@Loc我不知道这就是为什么会出现错误,但这不是我试图在表中搜索并查找与sqlhack数据库相关的所有表的重点。如果可能的话,我如何使它同时验证这两个表?只需运行
选择表\u name,2,3从information_schema.tables中的table_schema IN('sqlhack','users')
好吧,这个表真的存在吗?不,但它不应该存在,我不想在
information_schema.users中搜索,因为这个不应该存在于我的模式中。您正在运行
SELECT*FROM users…
。该
用户
表是否存在?如果没有,则无法对其执行
选择