2011-09-09 12 views
29

¿Cómo puedo saber cuándo fue exitosa una actualización de MySQL versus datos realmente actualizados?¿Cómo puedo saber cuándo fue exitosa una actualización de MySQL versus datos realmente actualizados?

Ejemplo:

TABLE 
id city_name 
1  Union 
2  Marthasville 

Si funciono el siguiente:

$data = array('city_name', 'Marthasville'); 

//update record 2 from Marthasville to the same thing, Marthasville. 
$this->db->where('id', 2); 
$this->db->update('table', $data); 

if($this->db->affected_rows() > 0) 
{ 
    //I need it to return TRUE when the MySQL was successful even if nothing was actually updated. 
    return TRUE; 
}else{ 
    return FALSE; 
} 

Esto devolverá TRUE cada vez que la instrucción UPDATE es exitosa, pero FALSO cuando no hay filas se actualizan realidad.

Lo necesito para devolver TRUE cada vez que la instrucción UPDATE se ejecutó correctamente, incluso si en realidad no cambia ningún registro.

Respuesta

38

Tenga una mirada en mysql_affected_rows()

Cabe decir que si algo se actualiza en realidad en lugar de nada se ha actualizado correctamente lo que resulta en un retorno de la verdadera.

php.net dice:

mysql_affected_rows()

Devuelve el número de filas afectadas en caso de éxito, y -1 si el último consulta falló.

podría utilizar el siguiente para lograr los resultados deseados:

if($this->db->affected_rows() >= 0){ } 
+0

Acabo de actualizar mi pregunta de nuevo para indicar más claramente el problema que estoy teniendo con el uso de mysql_affected_rows(). Ojalá no hubiera publicado mi pregunta tan pronto: S – zechdc

+1

Creo que la respuesta de JLeafgle seguía siendo la correcta. mysql_affected_rows devolverá -1 si la última consulta falló, de lo contrario devolverá> = 0. Suponiendo que eso es lo que está buscando, entonces simplemente cambie su sentencia if a ... "if ($ this-> db-> affected_rows()> = 0) " –

+0

Estás en @Jon Stirling. Actualicé la respuesta de Jleagle para reflejar su sugerencia, sin embargo, no puedo aprobar la edición, así que si alguien más pudiera, sería genial. ¡Gracias! – zechdc

10

allí tendría que utilizar mysql_query: declaraciones

SQL, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() devuelve TRUE en caso de éxito o FALSE en caso de error.

simple como esto:

$result = $this->db->update('table', $data); 

if($result) 
{ 
    //without error even no row updated 
} else { 

} 
+0

Gracias por la respuesta. Su código funcionaría para mi situación, sin embargo, la respuesta de Jleagle funciona un poco mejor en mi código. – zechdc

+0

¿Esto también se aplica al objeto PDO en versiones posteriores de PHP? –

Cuestiones relacionadas