循环遍历mysql的结果

时间:2015-04-16 16:38:42

标签: php arrays mysqli preg-match

我在从mysql搜索生成的数组时遇到了一些麻烦。我有以下代码:

if($result=$link->query("select s_abbreviation from northwoods.state")) {
if($result->num_rows) {
    while($row=$result->fetch_assoc()) {
        if(!preg_match("/".$STATE."/", $row['s_abbreviation'])) {
        $error=true;
        echo "Please enter a valid two letter state abbreviation for the state that your address is located in!";
        }
    }
  }
}

结果数组有59行,我试图将$ STATE模式与至少一行匹配,否则回显错误。问题是它匹配59行中的1行但仍然回声58错误,因为它无法匹配其他58行。有没有可以使用的方法或修饰符,以便搜索所有行,如果找到一个匹配,则不会发送错误?

2 个答案:

答案 0 :(得分:3)

试试吧

if($result=$link->query("select s_abbreviation from northwoods.state")) {
    if($result->num_rows) {
        $error = true;
        while($row=$result->fetch_assoc()) {
            if(preg_match("/".$STATE."/", $row['s_abbreviation'])) {
                $error = false;
            }
        }

        if($error) {
            echo "Please enter a valid two letter state abbreviation for the state that your address is located in!";
        }

    }
}

如果有任何问题,请告诉我。

答案 1 :(得分:1)

即使您的代码不是"前沿",也可以采取以下措施来解决问题:

if($result=$link->query("select s_abbreviation from northwoods.state")) {
    if($result->num_rows) {
        while($row=$result->fetch_assoc()) {
            if(!preg_match("/".$STATE."/", $row['s_abbreviation'])) {
                $error=true;
            }
        }
    }
}
if ($error) {
    echo "Please enter a valid two letter state abbreviation for the state that your address is located in!";
} else {
    echo "OK";
}