mysql like子句不适用于数组php

时间:2012-07-30 13:14:59

标签: php mysql arrays

您好我正在尝试计算位置列中有多少行,其中名称包含预定义$ uk_array中的任何名称。

mysql打印出我的列“there()”中没有任何值与数组中的名称匹配,尽管有一个“都柏林,爱尔兰”。

以下是代码:

    <?php
    include'connect.php';
    $uk_array = array('Liverpool','London','London UK','UK','London',
    'Dublin, Ireland','Manchester','Norwich','United Kingdom','Norwich','Duplin','England','ENGLAND',
    'united kingdom');

    $string = '';

    foreach($uk_array as $term=>$i) {
        $string = $string."location LIKE '%".$i."%' AND";
    }
    $string = substr($string, 0, -5);
    $query="SELECT COUNT(location) as location FROM tweets WHERE $string";
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
        echo "There are ". $row['location']."";

    }


    ?>

2 个答案:

答案 0 :(得分:4)

你应该这样做

$string = $string."location LIKE '%".$i."%' OR";

使用OR运算符切换AND运算符,否则该字段必须包含uk_array中的所有值。

另外,你有一个拼写错误 - Duplin?

编辑:更多错误

foreach($uk_array as $term=>$i) {
    if($term) $string .= ' OR '; // only append OR if it's not the first one
    $string .= "location LIKE '%".$i."%'";
}

答案 1 :(得分:0)

您可能想要使用 OR 运算符

  // change this
  // $string = $string."location LIKE '%".$i."%' AND";
  // to
   $string = $string."location LIKE '%".$i."%' OR";
 // and 
 // $string = substr($string, 0, -5);
 // to
 $string = substr($string, 0, -3);