Ver Mensaje Individual
  #12 (permalink)  
Antiguo 07/06/2011, 19:42
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Problema con php (mysql)

Hola,

Seguramente la consulta se realiza exitosamente, el problema es que es una función y devuelve un valor, y como me suena a CodeIgniter, seguramente te devuelve true o false dependiendo si se llevó a cabo o no se llevó a cabo exitosamente la consulta.

Código PHP:
<?php 
        $result
=$db->query("UPDATE account SET password = PASSWORD('$new_password') WHERE login = '".$username."' AND password=PASSWORD('".$password."')");
    
        if(
$result) {
            
                echo 
'La contraseña se ha cambiado correctamente!';
                }else{
'Combinación incorrecta';}
Ahora ... el problema es de interpretación de las consultas SQL, en las API de las bases de datos las consultas pueden efectuarse exitosamente aún cuando no modifiquen nada, es decir, aunque no se actualice nada devuelve 'true' puesto que no hubo error en no actualizar nada, porque no se encontró un registro coincidente aunque se realizó la acción.

En este caso creo que sería aconsejable hacer un select previo para averiguar si existe la contraseña y en caso positivo hacer el cambio.

Código PHP:
        $result=$db->query("SELECT COUNT(*) cuenta FROM account
WHERE login = '"
.$username."' AND password=PASSWORD('".$password."')");
        if (
$result->get('cuenta') == 1) {
          
// actualiza UPDATE
        
} else {
          
// la contraseña no coincide
        

Observa que $actualiza->get() me lo acabo de inventar, porque no tengo ni idea que es $result, pero seguramente de alguna forma tiene algún método para recuperar un campo, en este caso el campo 'cuenta'.

Saludos,