Не работает проверка сравнения введенных данных в форме и в БД MySQL PHP
Проблема следующего характера: при редактированни данных пользователя в форму автоматически добавляются его данные из БД. После нажатия подтверждения, необходимо, чтобы не изменные данные остались прежние. Проблема идет в редактировании пароля, он зашифрован через password_hash. Сделал следующую проверку, что если в форме отправляется такой же пароль, что уже имеется в БД - редактировать его не нужно, если пароль изменился, то необходимо его изменить перед этим зашифровав.
$db_userspass = mysqli_fetch_all(mysqli_query($connect, "SELECT * FROM users"));
for ( $j = 0; $j < count($db_userspass); $j++ ) {
$password = $_POST['password'];
$hash = $db_userspass[$j][4];
if ( $password == $hash){
$s_password = $_POST['password'];
}
else {
$s_password = password_hash($password, PASSWORD_DEFAULT);;
}
}
<form action="" class="form" method="POST" >
<div class="form-group">
<input class="form-control" name="password" value="<?= isset($_GET['user_id']) ? $result['password'] : ''; ?>" >
</div>
Следующий код состоит в том, что мы проходим по данным всех пользователей в БД и ищем пароль, который в форме, если его нет - записываем новый зашифрованный. Проблема состоит в том, что на одном сайте это работает, а на другом с такой-же логикой - нет.
Методом проб было выявлено, что если в строке $hash = $db_userspass[$j][4]; сранивать просто значение с БД в котором нужное число, например (код ниже), то все работает. То есть с условием вроде бы все хорошо, ему не нравится данные взятые данные из БД. Главное на аналогичном другом сайте с такой же структурой и переменными - все работает как часы...
$hash = 1;
if ( $password == $hash){
Также еще заметил, что если убрать $s_password = password_hash($password, PASSWORD_DEFAULT); и написать $db_userspass[$j][4]; выведется последний зашифрованный пароль в БД.
Также прикладываю пример базы данных и ее структуру

