4

私はこれが正しくないことを知っていますが、これは基本的に私がやりたいことです:

delete FROM jos_users WHERE name like '<firstname>=<lastname>'

Joomlaでは、名前fieldは1つの入力であり、同じ名前と名前を持つスパムアカウントがたくさんあります(たとえば、Uzhuzaio Uzhuzaio)。これを削除します。

要約すると、フィールドに同じ単語が2つ含まれているjos_users場所からユーザーを削除するクエリが必要です。name

4

3 に答える 3

2

私はそれを思います

DELETE FROM jos_users WHERE SUBSTRING_INDEX(name, '=', 1 ) = SUBSTRING_INDEX(name, '=', -1 )

トリックをする必要があります、あなたはそれを試しましたか?

于 2012-11-27T07:56:51.030 に答える
1

SUBSTRING_INDEXを使用できます。これは、区切り文字が特定の回数発生する前または後にサブ文字列を返します。
以下の例では、スペースが区切り文字であり、カウントが1の場合は最初のスペースの左側にすべてが返され、カウントが-1の場合は最初のスペースの右側にあるすべてが返されます。

DELETE FROM jos_users WHERE 
       SUBSTRING_INDEX(name, " ", 1)=SUBSTRING_INDEX(name, " ", -1)

ただし、最初にSELECTを実行して、そこに正当なユーザーがいないことを確認します(まれですが、発生する可能性があります)

重要な注意:これは、名前がの形式の場合にのみ機能し<name> <surname>ます。複数のスペースがあると問題が発生します。複数のスペース(たとえば<composite name> <composite name>)の場合は、異なるカウント値(2;-2 3;-3など)を使用する必要があります。

于 2012-11-27T08:03:01.987 に答える
0

Joomlaには、デフォルトでは、名前と名前に別々のフィールドがありません。ほとんどの場合、それらは何らかの記号で区切られています。それを定義して、簡単なPHPコードを書くことをお勧めします。少なくともこれは私がすることです。

于 2012-11-27T07:57:45.197 に答える