web-dev-qa-db-fra.com

Comment savoir quand une MISE À JOUR MySQL a réussi ou des données réellement mises à jour?

Comment savoir quand une MISE À JOUR MySQL a réussi ou des données réellement mises à jour?

Exemple:

TABLE
id    city_name
1     Union
2     Marthasville

Si je lance ce qui suit:

$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;
}

Cela renverra TRUE chaque fois que l'instruction UPDATE réussit, mais FALSE lorsqu'aucune ligne n'a été réellement mise à jour.

J'en ai besoin pour renvoyer TRUE chaque fois que l'instruction UPDATE a été exécutée avec succès même si elle ne change aucun enregistrement.

33
zechdc

Jetez un oeil à mysql_affected_rows ()

Il devrait vous dire si quelque chose a été réellement mis à jour, par opposition à rien n'a été mis à jour avec succès, ce qui a pour résultat un retour de true.

php.net dit:

mysql_affected_rows ()

Renvoie le nombre de lignes affectées en cas de succès et -1 si la dernière requête a échoué.

Vous pouvez utiliser les éléments suivants pour obtenir les résultats souhaités:

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

Ensuite, vous utiliseriez mysql_query :

Les instructions SQL, INSERT, UPDATE, DELETE, DROP, etc., mysql_query () renvoie TRUE en cas de succès ou FALSE en cas d'erreur.

Simple comme ça:

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

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

}
13
lnguyen55