Vérifier si la db->mise à jour réussie avec Codeigniter lorsque potentiellement pas de lignes de mise à jour
J'ai été en utilisant $this->db->affected_rows()
pour vérifier si des mises à jour ont été couronnés de succès. Mais cela ne fonctionne pas lorsque les entrées de l'utilisateur de même que les données soient stockées qui est déjà en mémoire (parce que pas de colonne est en fait mis à jour). Ma solution a été d'obtenir les données enregistrées, la comparer à la saisie de données, mise à jour si elle est différente, de retour d'un NO_CHANGE constante même si. Avec les données JSON, il ya un supplément de l'analyse de l'étape.
Est-il un moyen plus facile de vérifier qu'il n'y a pas d'erreur avec la mise à jour? Comme dans, quelque chose qui ne nécessite pas d'obtenir les données stockées à l'avance?
Vous devez vous connecter pour publier un commentaire.
Si je comprends correctement, vous pouvez utiliser les transactions pour s'assurer qu'il n'y a pas d'erreur avec la mise à jour:
Rappelez-vous seulement ce ne valide qu'il n'y avait pas d'erreur SQL lors de toutes les requêtes à l'intérieur de la transaction.
Voici le lien pour plus d'info Code De L'Allumeur Active Record De Transactions
De plus pour la accepté de répondre à la solution pourrait accroître le code comme suit pour différencier
affected_rows
ettrans_status
résultats/erreurs.Mirov Lorsque nous travaillons avec codeigniter, les données de mise à jour uniquement quand il y a un peu de changement dans le champ de saisie de la valeur et puis le
$this->db->affected_rows()
sera de retour valeur supérieure à 0.Supposons que nous avons deux
name
etemail
, si nous essayons d'envoyer le formulaire sans modifier le champ$this->db->affected_rows()
va retourner 0 sinon il sera de retour 1.donc meilleure approche est d'utiliser
ma "solution de contournement" qui est assez facile, est d'inclure un champ qui est toujours mis à jour. par exemple, si vous avez un terrain et de le mettre à jour avec une date & valeur de temps avec les secondes, alors la date de secondes sera toujours différente, même si l'autre mettre à jour les valeurs sont toujours les mêmes.
bonus est que vous avez une date de temps dans la db record lors de la dernière mise à jour a été effectuée.
Je ne suis pas sûr de savoir pourquoi nous ne pouvons pas utiliser seulement ceci: