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 数据库)中的段落进行比较。

我们面临的问题是如何识别是什么/哪个“标签”(标签字符串之外)导致了结果。

示例:生成的段落就像字符串 $tags 中的标签 'foo',它是 'word,phrase,term,foo,bar,anything' 我们如何确定 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 回答