好的,所以我已经找到了几种完成这项工作的方法,并且没有一种方法可以帮助我,让我给你一些细节,说明为什么我尝试的方法不起作用。
我已经尝试了SUBSTRING_INDEX
,因为我们大多数人都知道它只根据字符串中的分隔符数“拆分”,并且它对所有行都不是相同的数量,所以这是不行,我也尝试了http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
我再次相信它基于查询中的分隔符数量。
我已经搜索并搜索了一种方法来完成这项工作,而我却找不到让它运行的方法。我仍然是PHP的新手,所以这可能是一个简单的修复,我只是以某种方式忽略它,但我不确定。
这是我正在使用的内容;
这是sql查询
$sql = "SELECT * FROM offers WHERE type='$type' and country='$membercountry' LIMIT $start, $limit";
$result = mysql_query($sql);
country
是包含逗号分隔字符串的列。有些行只是US
,而其他行有US,AU,CA,GB
我需要拆分它们的原因是因为实际显示商品的页面会检查用户国家/地区是否与商品国家/地区匹配,并且当它作为整个长字符串读取时显然不匹配,这意味着这些优惠不会出现在用户身上。
我和我的一个朋友聊过,他说要使用explode()
,但我很确定你不能在SQL查询中使用explode()
。
我知道我可能没有解释过这个问题,我整晚都在做这个项目,所以我有点累了。
另外作为一个说明,我知道我可以把它带到每个提供多个行的地方供应不同的国家,但是这些提供中的一些允许所有国家都这样做,这意味着对于1个提议我会有243行,这会让我觉得我只是马虎!
如果有人能给我推进正确的方向,我将非常感激!
谢谢,凯西
答案 0 :(得分:3)
奇怪/糟糕的数据设计:名为country
的列中的多个国家/地区。除此之外,您可以使用FIND_IN_SET()
执行某些操作。
mysql> SELECT * FROM offers WHERE FIND_IN_SET('CA', country);
表现明智..它不会很好但我希望你可以使用一个好的索引选择其他领域。
答案 1 :(得分:1)
这样的事情可能有用:
$sql = "SELECT * FROM offers WHERE type='$type' and country LIKE '%$membercountry%' LIMIT $start, $limit";