Maison  >  Article  >  développement back-end  >  Comment puis-je détecter de manière fiable le succès d’une requête de création, de mise à jour ou de suppression dans CodeIgniter ?

Comment puis-je détecter de manière fiable le succès d’une requête de création, de mise à jour ou de suppression dans CodeIgniter ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 04:13:30281parcourir

How can I reliably detect the success of a Create, Update, or Delete query in CodeIgniter?

Détection du succès d'une requête de création, de mise à jour ou de suppression dans CodeIgniter

Lors de l'exécution d'opérations de base de données dans CodeIgniter, il est essentiel de vérifier leur succès. Ne pas le faire peut entraîner une incohérence des données ou l'affichage de résultats incorrects à l'utilisateur.

Approche incorrecte :

La méthode du contrôleur fournie suppose que tout retour non nul la valeur de la méthode de modèle update() indique le succès. Cependant, il ne s'agit pas d'une approche fiable puisque le modèle peut renvoyer des valeurs non nulles même lorsque la requête ne parvient pas à mettre à jour les lignes.

Approche correcte :

Pour correctement détecter le succès des opérations de base de données, il est recommandé d'utiliser ce qui suit étapes :

Contrôleur :

  • Recevez les données d'entrée en toute sécurité via POST, et non via l'URL.
  • Utilisez la méthode affectée_rows() de la classe de base de données CodeIgniter pour vérifier le nombre de lignes affectées après l'exécution de la requête.
  • Rediriger l'utilisateur et afficher un succès ou un message d'erreur basé sur le nombre de lignes concernées.

Modèle :

  • Gérer la requête de base de données et la vérification des erreurs.
  • Utilisez la méthode update() dans la classe de base de données CodeIgniter pour exécuter la requête.
  • Renvoie le nombre de lignes affectées, permettant au contrôleur de déterminer le résultat de l'opération.

Exemple :

<code class="php">// Controller
public function delete($user_id)
{
    if ($this->input->server('REQUEST_METHOD') == 'POST') {
        $result = $this->Crm_user_model->delete($user_id);
        if ($result === false) {
            add_flash_message('alert', 'Failed to delete user');
        } else if ($result == 0) {
            add_flash_message('info', 'User not found or already deleted');
        } else {
            add_flash_message('info', 'User deleted successfully');
        }
    }
}</code>
<code class="php">// Model
public function delete($user_id)
{
    $this->db->delete('user_table', ['user_id' => $user_id]);
    return $this->db->affected_rows();
}</code>

Considérations supplémentaires :

  • Comme mentionné dans la solution fournie, il est conseillé d'inclure des contrôles de sécurité à la fois dans le contrôleur et dans le modèle pour empêcher tout accès non autorisé ou saisie de données malveillantes.
  • Il est avantageux de conserver un historique des modifications dans votre système pour suivre les modifications apportées aux enregistrements de la base de données.
  • Pour les opérations de base de données complexes, envisagez d'utiliser le modèle ActiveRecord de CodeIgniter, qui fournit un modèle plus structuré. approche de la manipulation de bases de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn