如何完成下面的代码?我正在努力 select news
从数据库和 locations
这可能是 23,22,88,90
位置代码。我知道你可以 IN('23', '22', '88', '90')
但问题是,我的位置是一个字符串,所以它就像 IN('23,22,88,90')
我相信。
如何在位置字符串上展开并选择所有或任何位置(包括字符串中的位置)?所以在数据库里, newsLocations
可以是 22
23 22,90
23,80,90 90
. 这有道理吗?所以如果 $locationstoGet
有 22,88,90
只是,它会得到 newsLocation
即使结果只是 88,90
没有 22
.
$locationsToGet = '22,88';
$db->query("SELECT * FROM news WHERE newsLocation IN($locationstoGet)");
我希望我能解释清楚。
3条答案
按热度按时间qrjkbowd1#
如果您的数据以逗号分隔存储在database列中,那么您可以使用mysql find in set,如下例所示。
在_集合中选择find_('b','a,b,c,d');
或者你可以尝试在mysql中使用正则表达式,但是速度太慢了。
eh57zj3b2#
您可以创建一个位置数组,然后用数组中的项目填充查询字符串
92vpleto3#
我在另一个网站上看到了回应
所以我会根据你的情况调整解决方案。将locations更改为进入数组,并使用内爆函数为in子句生成正确的语法。
这个解决方案假设您的数据库结构是这样的
但是如果您将数据存储为以下内容
除了从news表中选择all和让php过滤位置之外,您将没有太多选择。不是很有效的方法。