I need to compare a string grabbed from a URL, with a list of cities in a MySQL DB, using PHP
SELECT 'city' WHERE 'city' IN (" . $citynameArray . ") LIMIT 1;
$citynameArray is to be list of all possible permutations of $cityname, where $cityname may be up to 5 strings separated by hyp开发者_如何学Pythonhens, BUT 'city' may use either spaces OR hyphens to separate each string.
So 'city' may look like any of these:
- string
- string string
- string string string
- string string string string
- string string string string string
- string-string
- string-string-string
- string-string-string-string
- string-string-string-string-string
- string string-string
- string-string string
- string-string string string
- string string-string-string
- string string string-string
- string string string-string
- string-string-string string
- string-string string-string
- string-string-string string
- string-string string string string
- string-string-string string string
- string-string-string-string string
... and so on, to a maximum of 5 separated strings
In the vast majority of cases however, 'city' is either:
- string
- string string
- string-string
or, less common:
- string-string string
- string string-string
My question then, how do I generate the array? And, by using 'LIMIT 1', will the query stop looping through the array as soon as a result is found?
I appreciate any insights,
regards,
GJ
I had hoped for elegance, but this will have to do.
CASE 1 represents 90% of use-cases, and the overhead is negligable.
Percentage of use-cases depreciates to CASE 5 which applies to 1 out of 2000 cases. I analyzed the actual patterns for CASE 4, and the patterns did not have to be exhaustive.
    // 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;
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论