相关疑难解决方法(0)

Codeigniter交易

我正在使用Codeigniter交易

$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();
Run Code Online (Sandbox Code Playgroud)

这工作得很好,我有问题是内部的trans_starttrans_complete我打电话等功能,这些功能与数据库交易,使他们包含插入和更新以及一些删除...例如:

$this->db->trans_start();
 $this->utils->insert_function($data);
 $this->utils->update_function2($test);
$this->db->trans_complete();
Run Code Online (Sandbox Code Playgroud)

现在,如果执行这些函数并且发生一些错误,CodeIgniter将不会执行回滚.

处理此类问题的最佳方法是什么?

我想到的唯一解决方案是从这些函数返回错误并在那些函数内添加(trans_stattrans_complete)如果它返回错误测试则执行$this->db->trans_rollback

例如:

    $this->db->trans_start();
     $result = $this->utils->insert_function($data);
     if($result === false){
       $this->db->trans_rollback();
     }
    $this->db->trans_complete();
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

更新1:

根据要求我正在调用的外部函数示例:

   // insert_function contains

    $rec = array(
        'numero' => $numero,
        'transaction_id' => $id,
        'debit' => $product_taxes['amount_without_taxes'],
        'date' => $data['date_transaction'],
    );
    $this->addExerciceAccountingRecords($rec);

  and addExerciceAccountingRecords contains

   function addExerciceAccountingRecords($records) {
    $this->db->insert('transactions_exercices', $records);
    }
Run Code Online (Sandbox Code Playgroud)

php mysql transactions codeigniter codeigniter-3

33
推荐指数
2
解决办法
4万
查看次数

更新查询增量字段加1个codeigniter

我在db中的给定字段上尝试增加1时出现问题.我尝试了有无活动记录.

我的函数看起来像这样(在我的模型中)

function _set_reads($id){
$this->db->set('reads', 'reads+1', FALSE)
$this->db->where('id', $id);
$this->db->update('article');
}
Run Code Online (Sandbox Code Playgroud)

function _set_reads($id){
$sql = 'update article set reads=reads+1 where id=?';
$this->db->query($sql, array($id));
}
Run Code Online (Sandbox Code Playgroud)

我在两种情况下都得到相同的错误,它是以下错误消息:

Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'reads+1 WHERE `id` = '15'' at line 1

UPDATE `article` SET `reads` = reads+1 WHERE `id` = '15'
Run Code Online (Sandbox Code Playgroud)

我使用的是最新版本的MAMP

php codeigniter codeigniter-2

3
推荐指数
2
解决办法
3万
查看次数