在MySQL表中搜索逗号分隔区号

时间:2016-09-01 10:55:30

标签: php mysql

我正在尝试修改现有的脚本,只会将包含特定区号的行输出到已分配特定区号的用户。

示例:

users表中名为designed_areas的列将包含不同的数据,如:CM,SS,RH

当一个潜在客户进来时,我正在使用substr来检测邮政编码的前两个字符。

$trimmed = substr("$postcode", 0, 2);


$viewLeads=mysqli_query($con,"SELECT * FROM leads WHERE team = '$getID->team' ORDER BY id DESC");

while($lead=mysqli_fetch_object($viewLeads)){

我想扩展mysqli_query并从数据库中选择所有潜在客户,其中邮政编码的前2个字符与任何用户named_areas匹配,这些用户是逗号分隔的。

这样,他只能看到他可以处理的领域的潜在客户。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用以下查询:

SELECT * FROM leads WHERE team = '$getID->team' and designed like '%{$trimmed}%' ORDER BY id DESC;

Php代码:

$viewLeads=mysqli_query($con,"SELECT * FROM leads WHERE team = '$getID->team' and designed like '%{$trimmed}%' ORDER BY id DESC;");

答案 1 :(得分:1)

你可以用正则表达式来做。例如,在MySQL中,如果你的postal_code表看起来像这样:

PersonID   Zips
1          11111,22222,33333
2          22222,12121,32323

你想要的人有邮政编码,如33 *

SELECT PersonID FROM `postal_code` WHERE zips rlike '33[0-9]{3}'

这假定所有邮政编码都是5位数,而您总是使用2位数进行搜索。它基本上是说“找到前两位数为33的5位数”或者你的搜索号是什么 PHP代码可能如下所示:

$search = 33 ;
$sql = "SELECT PersonID FROM `postal_code` WHERE zips rlike '$search[0-9]{3}'" ;

无论逗号,空格等如何,此解决方案都可以找到匹配项。您的PHP代码中不需要进一步处理。

相关问题