2 votes

Transaction mysql non validée Codeigniter 3

Le modèle est simple j'ai besoin de supprimer 2 lignes des tables, la table parcelas a une clé étrangère supprimée en cascade, la table assoc n'a pas de clé étrangère

le contrôleur

  if($this->delete_model->delete_parcela_model($this->input->post('id_parcela_delete'),$this->input->post('id_loteo_delete'),$this->input->post('id_user_delete')))
        {
            echo 'supprimé';
            exit(1);

        }
        else
        {
            echo 'erreur';
            exit(1);

        }

et l'appel de fonction dans le modèle est

function delete_parcela_model($id_parcela,$id_pago,$id_user)
{

    $this->db->trans_begin();
    $this->db->query('delete from parcela where id_parcela = "'.$id_parcela.'" and id_dueno = "'.$id_user.'"');
    $this->db->query('delete from es_dueno_assoc where tipo_dueno_id = "'.$id_parcela.'" and user_id = "'.$id_user.'"');

    if ($this->db->trans_status() === FALSE)
    {
        // générer une erreur... ou utiliser la fonction log_message() pour enregistrer votre erreur
        $this->db->trans_rollback();
        return false;
    }
    else
    {
        $this->db->trans_commit();
        return true;

    }

retourne toujours vrai mais la transaction n'est pas validée....

0voto

lgroschen Points 125

Je ne suis pas sûr pourquoi trans_status() ne retourne pas, mais je voudrais utiliser l'aide intégrée du helper de base de données de Codeigniter comme ceci et nous pouvons essayer de déboguer :

$this->db->delete($this->tables['parcela'], array("id_parcela" => $id_parcela, "id_dueno" => $id_user));

Ensuite, vous pouvez tester cela en ajoutant un journalisation pour voir ce que $this->db->affected_rows() affiche :

var_dump($this->db->affected_rows());
var_dump($this->db->affected_rows() === FALSE);
die();

Ensuite, vous pouvez essayer d'obtenir la bonne valeur. Veuillez également consulter cette page pour plus de détails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X