【发布时间】:2018-05-06 12:37:56
【问题描述】:
这是我的代码:
$q = '8gb pro';
$sforeach = explode(' ', $q);
$treffer = "when (titel LIKE '% $q %') then 1";
$sortstring = "";
foreach($sforeach as $sf)
{
$sortstring .= "(titel LIKE '% $sf %') AND";
}
$sortstring = rtrim($sortstring, ' AND');
$sortstring2 = "";
foreach($sforeach as $sf)
{
$sortstring2 .= "(beschreibung LIKE '% $sf %') AND";
}
$sortstring2 = rtrim($sortstring2, ' AND');
$sort = "order by case
$treffer
when $sortstring then 2
when $sortstring2 then 3
else 4
end, views DESC";
当我搜索让我们说8gb pro 时,带有title 的行(如Acer TravelMate P648-MG-71S5)会显示在带有类似Dell Radeon Pro WX 7100 8GB GDDR5 的标题的行之前,即使条件when $sortstring then 2 应该在when $sortstring2 then 3 之前并将其放在另一个对不对?
【问题讨论】:
-
啊,我在我的真实代码中看到了 sry,它并不是真正的 '$q' 而是 $q 它发生在此处放置一个简单版本以便更好地理解时。请删除您的 cmets ^^
-
我们只是不够清楚——我们需要查看一些表格数据和您呈现的查询。您能否模拟我们一个 sqlfiddle 演示链接,以便我们可以看到正在重现的问题?
-
好的,我会在检查一些替代订购方式后尝试
-
看起来我从stackoverflow.com/questions/3609166/mysql-order-by-like 获得的整个解决方案不起作用,因为我尝试了简单的方法:$sort = "order by case when title LIKE '% 8gb %' then 1 end ";它仍然无法正常工作,但再次显示另一个订单。所以我真的需要寻找另一种解决方案
-
好的,如果我找不到替代品,我会的,谢谢
标签: php sql mysqli sql-order-by case