我需要使用PHP将从URL中获取的字符串与MySQL数据库中的城市列表进行比较
SELECT 'city' WHERE 'city' IN (" . $citynameArray . ") LIMIT 1;
$citynameArray
是$cityname
所有可能排列的列表,其中$cityname
最多可包含5个以连字符分隔的字符串,但'city'可以使用空格或连字符将每个字符串分开。
所以'城市'可能看起来像这些:
......依此类推,最多可分为5个字符串
然而,在绝大多数情况下,“城市”要么是:
或者,不太常见:
我的问题是,如何生成数组?并且,通过使用'LIMIT 1'
,一旦找到结果,查询是否会停止循环遍历数组?
我很欣赏任何见解,
的问候,
GJ
答案 0 :(得分:-1)
我曾希望优雅,但这必须要做。
CASE 1代表90%的用例,开销可以忽略不计。
用例百分比折旧为案例5,适用于2000个案例中的1个案例。我分析了CASE 4的实际模式,模式并不一定是详尽无遗的。
// FIRST, CREATE AN ARRAY OF $LocaleURL PATTERNS, TAKING INTO ACCOUNT THE VARIABLE USE OF HYPHENS
$urlCityArray=explode("-",$LocaleURL);
$countSegs = (count($urlCityArray)); // how many array elements
if ($countSegs == 1) {
$urlCityQuery = $urlCityArray[0];
}
else if ($countSegs == 2) {
$urlCityQuery = $urlCityArray[0] . " " . $urlCityArray[1] . "', '";
$urlCityQuery .= $urlCityArray[0] . "-" . $urlCityArray[1];
// city1 city2, city1-city2
}
else if ($countSegs == 3) {
$urlCityQuery = $urlCityArray[0] . " " . $urlCityArray[1] . " " . $urlCityArray[2] . "', '";
$urlCityQuery .= $urlCityArray[0] . "-" . $urlCityArray[1] . " " . $urlCityArray[2] . "', '";
$urlCityQuery .= $urlCityArray[0] . " " . $urlCityArray[1] . "-" . $urlCityArray[2] . "', '";
$urlCityQuery .= $urlCityArray[0] . "-" . $urlCityArray[1] . "-" . $urlCityArray[2];
// city1 city2 city3, city1-city2 city3, city1 city2-city3, city1-city2-city3
}
else if ($countSegs == 4) {
$urlCityQuery = $urlCityArray[0] . " " . $urlCityArray[1] . " " . $urlCityArray[2] . " " . $urlCityArray[3] . "', '";
$urlCityQuery .= $urlCityArray[0] . " " . $urlCityArray[1] . "-" . $urlCityArray[2] . " " . $urlCityArray[3] . "', '";
$urlCityQuery .= $urlCityArray[0] . "-" . $urlCityArray[1] . "-" . $urlCityArray[2] . "-" . $urlCityArray[3] . "', '";
$urlCityQuery .= $urlCityArray[0] . " " . $urlCityArray[1] . " " . $urlCityArray[2] . "-" . $urlCityArray[3];
// city1 city2 city3 city4, city1 city2-city3 city4, city1-city2-city3-city4, city1 city2 city3-city4
}
else if ($countSegs == 5) {
$urlCityQuery = $urlCityArray[0] . " " . $urlCityArray[1] . " " . $urlCityArray[2] . " " . $urlCityArray[3] . " " . $urlCityArray[4] . "', '";
$urlCityQuery .= $urlCityArray[0] . "-" . $urlCityArray[1] . "-" . $urlCityArray[2] . "-" . $urlCityArray[3] . "-" . $urlCityArray[4];
// Notre-dame-de-lile-perrot
}
SELECT 'city' FROM Cities WHERE 'city' IN (" . $urlCityQuery . ") LIMIT 1;