Php 使用mysql显示特定国家/地区的web内容的最佳方式
我需要你的大力帮助。 我需要你们这些好人的建议 我有一些内容只需要向少数几个国家显示。我可以使用Geoip获取用户的国家。我将我的内容存储在MySQL数据库中,带有国家代码字段。国家代码可以为空,也可以是任何单个代码或逗号分隔的值组 我想做的是Php 使用mysql显示特定国家/地区的web内容的最佳方式,php,mysql,Php,Mysql,我需要你的大力帮助。 我需要你们这些好人的建议 我有一些内容只需要向少数几个国家显示。我可以使用Geoip获取用户的国家。我将我的内容存储在MySQL数据库中,带有国家代码字段。国家代码可以为空,也可以是任何单个代码或逗号分隔的值组 我想做的是 检查国家/地区代码,如果为空,则为所有用户显示该内容 如果国家/地区代码不为空且仅为单个值,则仅显示给定国家/地区代码用户的内容 如果国家/地区代码是一组以逗号分隔的值,则显示所有以逗号分隔的国家/地区用户的内容 我有两个选择来做这件事 分别为每个国家/
三列,如果用户的位置是美国
$sql=mysql\u fetch\u数组(mysql\u查询(“SELECT*FROM content\u table WHERE US=='$country\u code'))
$sql=mysql\u-fetch\u数组(mysql\u查询(“从国家代码所在的内容表中选择*);
$pieces=explode(“,”,$sql['country_code']);
foreach($val){
如果($国家/地区代码==“美国”)
//显示内容
}
- 在不同的国家使用不同的栏目进行快速搜索,但我认为增加更多的栏目并不好
- 使用单列和迭代逗号分隔的值需要更多的计算
请给我一些建议。。或者你还有比这更好的主意吗。。?谢谢我只想说-创建一个国家表
countries
id, code, name
1, UK , United Kingdom
。。。。。以及其他国家
content_country
content_id, country_id
1, 2
1, 1
1, 3
在content
表中,只需添加另一列country\u id或country\u code即可
Content
id, title, body, country_code
1, some text, more text, 1
然后在sql中
只需从country\u code='UK'或country\u id=1的内容中选择*即可
//具体取决于您选择的选项
或
创建一个单独的链接表,以允许多个国家/地区的内容
content_country
content_id, country_id
1, 2
1, 1
1, 3
要获取查询内容,请使用left/right/internal
join,例如
SELECT *
FROM `content` c
LEFT JOIN content_country cc ON cc.content_id = c.id
AND cc.country_id
IN ( 2, 4 )
我只是说-创建一个国家表
countries
id, code, name
1, UK , United Kingdom
。。。。。以及其他国家
content_country
content_id, country_id
1, 2
1, 1
1, 3
在content
表中,只需添加另一列country\u id或country\u code即可
Content
id, title, body, country_code
1, some text, more text, 1
然后在sql中
只需从country\u code='UK'或country\u id=1的内容中选择*即可
//具体取决于您选择的选项
或
创建一个单独的链接表,以允许多个国家/地区的内容
content_country
content_id, country_id
1, 2
1, 1
1, 3
要获取查询内容,请使用left/right/internal
join,例如
SELECT *
FROM `content` c
LEFT JOIN content_country cc ON cc.content_id = c.id
AND cc.country_id
IN ( 2, 4 )
如果我理解您的意思,您希望仅当用户国家代码位于country\u code
字段中或未指定country\u code
时,才向用户显示元素吗
这应该可以做到,即使数据库解决方案更好
如果我理解您的意思,您希望仅当用户国家代码位于country\u code
字段中或未指定country\u code
时,才向用户显示元素吗
这应该可以做到,即使数据库解决方案会更好。我之前给你写过一个答案。你可以在两个表中创建第二个表,将国家代码作为索引,第二个表只包含内容id+国家代码;然后在存在的地方(选择cc.*FROM
content\u countries
cc WHERE cc.country\u code=”。mysql\u real\u escape\u string($country\u code)。“'或cc.country\u code='ALL')感谢Fluffeh的回复。我已经阅读了你的帖子。很抱歉,我找不到解决我问题的方法。谢谢亲爱的朋友我之前给你写的答案。你可以在两个表中创建第二个表,用国家代码作为索引,第二个表只包含内容\u id+国家代码;然后在存在的地方(选择cc.*FROMcontent\u countries
cc WHERE cc.country\u code=”。mysql\u real\u escape\u string($country\u code)。“'或cc.country\u code='ALL')感谢Fluffeh的回复。我已经阅读了你的帖子。很抱歉,我找不到解决我问题的方法。无论如何,谢谢亲爱的朋友谢谢HappyApe给你的即时回复。如果要显示两个或更多国家/地区的选定内容,该怎么办?作为你的代码,如果它只包含一个国家,我想这会很容易。请看上面的或部分-创建一个链接表content\u country(因此你有3个表,content,country,content\u country),谢谢HappyApe。我认为你的答案是最好的解决办法。唯一的问题是我需要为多个国家添加另一个表。我有多个内容表要显示,如上所述。那意味着我还需要几张桌子。谢谢你的帮助,伙计。我会接受你的答案,在检查了其他人的观点之后,好的..我已经接受了另一个答案作为解决方案,因为它对我来说是有意义的。我很感激你有价值的答案,并对它投了赞成票。谢谢你的帮助,没问题。每个解决方案都有自己的优缺点,所以如果另一个解决方案能更好地解决您的问题,那么就去做吧。感谢HappyApe为您提供的即时响应。如果要显示两个或更多国家/地区的选定内容,该怎么办?作为你的代码,如果它只包含一个国家,我想这会很容易。请看上面的或部分-创建一个链接表content\u country(因此你有3个表,content,country,content\u country),谢谢HappyApe。我认为你的答案是最好的解决办法。唯一的问题是我需要为多个国家添加另一个表。我有多个内容表要显示,如上所述。那意味着我还需要几张桌子。谢谢你的帮助,伙计。在检查了其他人的观点后,我会接受你的答案好的,我已经接受了另一个答案