【问题标题】:Transactions Not working properly in insert query事务在插入查询中无法正常工作
【发布时间】:2020-07-10 04:51:28
【问题描述】:

所以我试图通过使用事务来运行查询,但它不工作,我确实检查了所有帖子,但似乎没有修复工作!每当我删除事务时,插入查询就可以正常工作。

这是控制器:

public function addEmployee(){
        $field = array(
            'NomClient'=>$this->input->post('fullName'),
            'TelClient'=>$this->input->post('tel'),
            'WilayaClient'=>$this->input->post('wilaya'),
            'CommuneClient'=>$this->input->post('commune'),
            'AdresseClient'=>$this->input->post('adresse'),
            'StatusID'=>$this->input->post('statusCommande'),
            'TelevendeuseID'=>$this->input->post('televendeuse')
            );
        $result= $this->m->addEmployee($field);
        $msg['success'] = false;
        $msg['type'] = 'add';
        if($result){
            $msg['success'] = true;
        }
        echo json_encode($msg);

    }

我的模特:

public function addEmployee($field){

         $this->db->trans_start();
         return $this->db->insert('Clients',$field);
         $this->db->trans_complete();

    }

请注意,当我将模型切换到:

    public function addEmployee($field){


         return $this->db->insert('Clients',$field);


    }

记录插入成功!这意味着交易有问题。我目前正在使用一个查询来测试它是否有效,因此我可以在此之后多次使用。请注意,这些表是 InnoDB 表,因此问题不在于表类型。请帮帮我!

【问题讨论】:

  • 当您只进行一次查询时,为什么还要使用事务?似乎有点无意义?
  • 你在$this->db->trans_complete();之前有一个return,所以它永远不会被执行。

标签: php mysql database codeigniter


【解决方案1】:

当你调用return时,它会结束函数,所以当它命中时

return $this->db->insert('Clients',$field);

它不会到达

$this->db->trans_complete();

也许……

$this->db->trans_start();
$return = $this->db->insert('Clients',$field);
$this->db->trans_complete();

return $return;

【讨论】:

  • 我有一个问题,如果我有多个插入,是否可以返回多个变量?还是应该将它们附加到数组中?
  • 如果您需要检查每个 SQL 是否有效,或者您只是假设一切正常,您将不得不考虑返回的内容。您还需要考虑何时(如果有的话)您可能想要回滚事务。
  • 我想用return来检查是否所有的记录都被插入了!对于单个插入,单个返回是正确的,但如果我有多个插入并且我想检查它们是否返回 true?
  • 不是这种类型的编码的忠实拥护者,但它很短 - 使用前一个命令的返回来标记后续命令 - $return = $return && $this->db->insert('Clients',$field); 如果$return 为假,它基本上是命令的快捷方式.
  • 好的,非常感谢!你觉得在 php > 7.1 中使用列表功能怎么样?
猜你喜欢
  • 1970-01-01
  • 2015-08-12
  • 2018-06-03
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多