select * from users where username='111' and concat(username, '0x7e',password) from information_schema.tables where table_schema=database()
时间: 2024-11-24 19:44:01 浏览: 10
解决Oracle没有WM_CONCAT函数.zip
这是一个SQL查询语句,尝试从数据库的"users"表中获取用户名为'111'的用户信息。然后它还试图通过`concat()`函数将这个用户名与字符串'0x7e'以及当前数据库的密码连接起来,并查找information_schema.tables表中对应的schema(也就是当前数据库名)。但是,这种方式是有误的,因为:
1. 在`select * from users`这行,不应该在同一行中同时从两个表中选择数据,应该分开两个`SELECT`语句。
2. `concat(username, '0x7e', password)`这部分通常用于字符串连接,但在查询用户信息时不需要这个操作,除非密码是以特定格式存储的,而在这个上下文中通常是不合适的。
3. `table_schema=database()`会尝试用当前数据库的名称来匹配`information_schema.tables`表中的schema,但这在实际查询中是多余的,因为`database()`是一个MySQL内置函数,通常用于获取当前数据库,而不是作为表的条件。
正确的做法可能是这样的:
```sql
-- 获取当前数据库名
SET @db_name = database();
-- 查询当前数据库的users表
SELECT * FROM users WHERE username = '111';
-- 如果需要,可以分别查询information_schema.tables的信息
SELECT * FROM information_schema.tables WHERE table_schema = @db_name;
```
阅读全文