SQLクエリから返された行を通過するwhileループがあります。その行の特定の列の値は配列に格納されます。次に、配列が繰り返され、各要素がユーザーからの入力と比較されます。入力が配列要素と一致する場合、ブール値はtrueになります。ユーザーが特定のページにアクセスするためのパスワードを入力できるように、これを実行しようとしています。しかし、それはうまくいきません。配列からのすべての値と入力を出力したので、そこに問題はないことがわかります。しかし、何らかの理由で、ifステートメントはそれらを比較しません。コードは次のとおりです。
if (isset( $_POST['ok'])) {
$password = $_POST['pass'];
$matched = false;
$pw = array();
mysql_connect("localhost", "xxx", "xxx")or die("Error");
mysql_select_db("details")or die("Error");
$query="SELECT * FROM members";
$result=mysql_query($query);
while ($row = mysql_fetch_assoc($result) ){
$pw[] = $row["pass"];
}
foreach($pw as $p){
if(strcmp($p, $password) == 0){
$matched = true;
}
}
if ($matched==true) {
//Membership page
} else {
//Error message
}
} else {
....