我在从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 :(得分: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";
}