ユーザー名とパスワードに対してデータベースをチェックして、一致する場合は true の値を返し、そうでない場合は false を返す関数を作成しています (いくつかの印刷値を使用して、視覚的な支援を行いました)。現在、私のデータベースのフィールドは id = 1、username = muyiwa、password = password (とにかく SHA1 暗号化バージョン) だけです。それ以外の場合は、値が正しくないというエラーがスローされるか、私の特定のケースでは 22 行目: print "no" がスローされます。
しかし、そうではないようです。コードは次のとおりです。
function checkLoginName($username, $password) {
global $mysqli;
$username = sanitizeData($username);
$password = SHA1($password);
$sql = "SELECT COUNT(`id`) FROM `users` WHERE `username` = '$username' AND `password` = '$password'";
$query = mysqli_query($mysqli, $sql) or die("Error: ".mysqli_error($mysqli));
$rows = mysqli_num_rows($query);
if ($rows == 1) {
//return true;
print "yes!";
} else {
//return false;
print "no";
}
}
checkLoginName("poo", "ha");
確認のために、「poo」と「ha」は「yes!」の値を返すべきではありません。それらはデータベースに存在しないためですが、存在します! それ以外はすべて正常に動作しているようです。これは、ロジックのエラーの SQL エラーだと思います。