0

我有一个查询:

select first_name from users where user_id=1 
UNION 
SELECT IF(SUBSTRING user(),1,4) = 'root',SLEEP(5),1);

每当我运行它时,我都会收到以下错误:

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version 
for the right syntax to use near 'user(),1,4) = 'root',SLEEP(5),1)' at line 1

我的目的是测试用户是否是root。

SUBSTRING user(),1,4)意思是:从位置1开始,获取四个字符(基本上是root)。如果数据库用户是root,则暂停5秒。

但是SLEEP(5),1)除了指示暂停指定的 5 秒之外,这意味着什么?

非常感谢

4

1 回答 1

1

正确的语法是:

IF(SUBSTRING(user(),1,4) = 'root',SLEEP(5),1)

你只是缺少一个(. 也许你也可以使用这个:

IF(user() like "root%", SLEEP(5), 1).

Sleep(n)只是将查询的执行暂停 n 秒。我不觉得它真的有用......但它是可能的。

于 2013-01-28T17:04:49.207 回答