Estás duplicando posts otra vez
majony.
Insisto, piensa un poco más en el proceso que va a seguir un script, o en este caso, una consulta sql, antes de programar.
Estás pidiendo de tu tabla todas las filas que tengan como password $password. Luego comparas los datos extraidos con $password. No es lógico que estas comparaciones sean verdaderas? Digo, si pides las filas con password A, entonces al comparar estas mismas filas con A tendrás un true por respuesta no?
Ya te lo dije en otro mensaje. No tiene caso que guardes la contraseña en 2 tablas distintas. Basta con que hagas la consulta a tu tabla con los datos de login, indicándole el nombre de usuario, o su id si es que lo tiene, y solicitar el password. Luego comparas este dato extraido de la bd con el que tu usuario puso en el formulario, y si son iguales continuas con el proceso.
Obviamente debes tener una forma de mantener el nombre de usuario o su id para indicarle a tu sistema que está logueado. Digamos sesiones. Cuando tu usuario se loguea le creas una variable de sesión con su nombre de usuario, y esta variable la usas después para verificar la contraseña.
No tienes un error de programación, sino de lógica. Y esos errores se solucionan con hoja y papel y no adivinando el código "correcto"