あなたはすでに答えを知っています。
まず、PHPコードは、ユーザー2のLookingForまたはDrugsの値が1つしかない場合にのみ機能するため、機能に近いものではありません。これらの列のいずれかに複数のカンマ区切り値が含まれている場合、INは これらの値は、ユーザー1の値とまったく同じ順序です。 右側の場合、INは何を期待しますか カンマが1つ以上ありますか?
したがって、PHPでやりたいことを行うのは「簡単」ではありません。これは実際には非常に面倒であり、ユーザー2のフィールドを単一の値に分割し、比較を行うために多くのORを使用して動的SQLを記述し、結果を取得するために非常に非効率的なクエリを実行する必要があります。
さらに、PHPコードを書く必要さえあるという事実 2つのセットの共通部分に関するこのような比較的単純な質問に答えることは、設計にひどい欠陥があることを意味します。これはまさにその種の問題です (関係代数)SQLが解決するために存在します。正しい設計により、データベース内の問題を解決できます。 次に、PHPまたはその他のテクノロジーでプレゼンテーション層を上に実装するだけです。
正しく行うと、はるかに簡単な時間になります。