2015-04-16 43 views
0

我在通过mysql生成的数组搜索时遇到了一些麻烦。我有以下代码:循环浏览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行。有没有一种方法或修饰符,我可以使用,以便它搜索所有的行,如果它发现一个匹配,然后没有错误发送?

+0

为什么不把它放在'where子句中的查询中?即'where s_abbreviation ='$ STATE'' –

+0

like where $ STATE in(s_abbreviation)?然后我可以检查返回的行数,如果0则回显错误,如果1则接受条目。我会尽力的,谢谢! –

+0

当然,你可以使用'IN()'或'FIND_IN_SET()',这取决于你的数据库是如何设置的。我编辑我的评论以上btw,举一个例子,但可能不是你想要的。 –

回答

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"; 
} 
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!"; 
     } 

    } 
} 

让我知道,如果有任何问题。

+0

谢谢,运作良好。 –