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

私の目的は、ユーザーがルートかどうかをテストすることです。

SUBSTRING user(),1,4)意味: 位置 1 から開始して、4 文字 (基本的には 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 に答える