3

私と私の同僚が今日長い間議論してきた非常に複雑な問題がありますが、私たちが見逃した素晴らしいアイデアを持っている人がいるのだろうかと思って、答えにたどり着けないようです.

$tags=mysql_real_escape_string($_GET["tags"]);
$tags="SELECT * FROM i WHERE tip LIKE '%".$tags;
$tags=str_replace(",","%' OR tip LIKE '%",$tags);
$tags=$tags."%'";
$qtags = mysql_query($tags) or die(mysql_error());

例: $tags='word,phrase,term,foo,bar,anything'

タグは、ユーザーが記述した段落から取得され、'i' (SQL データベース) に保存されている段落と比較されます。

私たちが直面している問題は、どの「タグ」(タグ文字列から) が結果を引き起こしたのかを特定する方法です。

例: 結果のパラグラフは、'word,phrase,term,foo,bar,anything' である文字列 $tags のタグ 'foo' のようでした。原因として foo を特定するにはどうすればよいでしょうか?

4

1 に答える 1

2

次のようなことを試すことができます:

SELECT
    CASE WHEN tip LIKE '%foo%' then 'foo'
         WHEN tip LIKE '%bar%' then 'bar'
         WHEN tip LIKE '%anything%' then 'anything'
    END as MatchedTag,
    i.*
FROM i
WHERE tip LIKE '%foo%'
   OR tip LIKE '%bar%'
   OR tip LIKE '%anything%'

$tags現在のクエリのように、変数から生成する必要があります。

于 2012-05-23T19:37:44.073 に答える