我正在使用Codeigniter交易
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();
这很好用,我的问题是在trans_start
和trans_complete
我正在调用其他函数,而这些函数处理数据库,因此它们包含插入和更新以及一些删除…例如:
$this->db->trans_start();
$this->utils->insert_function($data);
$this->utils->update_function2($test);
$this->db->trans_complete();
现在,如果执行了这些功能并且发生了一些错误,CodeIgniter将不会回滚。
处理此类问题的最佳方法是什么?
我想到的唯一解决方案是从这些函数中返回错误,并在这些函数中添加(trans_stat
和trans_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();
有更好的方法吗?
更新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);
}
使用
transactions
手段支持数据库安全地插入数据。因此,在Codeigniter中,我们 在 Model中
而不是Controller中
编写 与数据库相关的所有功能 。 。在您的第二个代码(不起作用)中,您已经在上面指向了模型
utils
。如此简单,我确定这将无法正常工作。因为它不是与模型和控制器并行的插入数据。交易应在模型中编码( 我将在回答中用模型编写
)。
加载这些东西
假设条件
在您的代码中,您已使用$data
和$test
作为数组。所以我假设有两个用于插入和更新数据的数组。
您的数据集
$data = array(
'title' => 'My title' ,
'name' => 'My Name' ,
'date' => 'My date'
);
$id = 007;
$test = array(
'title' => $title,
'name' => $name,
'date' => $date
);
您的密码
$this->db->trans_start(); # Starting Transaction
$this->db->trans_strict(FALSE); # See Note 01. If you wish can remove as well
$this->db->insert('table_name', $data); # Inserting data
# Updating data
$this->db->where('id', $id);
$this->db->update('table_name', $test);
$this->db->trans_complete(); # Completing transaction
/*Optional*/
if ($this->db->trans_status() === FALSE) {
# Something went wrong.
$this->db->trans_rollback();
return FALSE;
}
else {
# Everything is Perfect.
# Committing data to the database.
$this->db->trans_commit();
return TRUE;
}
笔记
问题内容: 我是stackoverflow和CodeIgniter的新手,目前正在尝试在Internet上找到的一些简单代码示例,以开始使用。我现在正在处理的是一种使用CI和Ajax(jQuery)的表单,并将表单的输入保存在数据库中,然后在表单的同一页上显示最新的表单。如果我感到困惑,那是这里的4.7应用示例。最初的源代码位于此处,但为了与最新版本的CI配合使用,我对其进行了修改,并在下面引用了
我是新的PHP Codeigniter框架。我正在设计一个页面,其中我使用了一个链接。点击链接时,它调用一个jQuery函数,通过jQuery提交表单。我已经使用codeigniter表单验证方法进行服务器端验证,目前我已经禁用了客户端验证。 问题是,在这个过程中,当表单通过jQuery提交时,codeigniter表单验证方法不起作用。 但是如果我使用submit按钮来提交表单,那么codeig
安装CodeIgniter非常容易。 只需按照以下步骤操作 - Step-1 - 从CodeIgniter链接下载CodeIgniter 遗产和最新版本有两种不同的选择。 名称本身是自我描述性的。 旧版本的版本低于2.x,最新版本为3.0版本。 我们也可以使用GitHub并获取所有最新的脚本.. Step-2 - 解压缩文件夹。 Step-3 - 将所有文件和文件夹上传到您的服务器。 Step-4
CodeIgniter 是一个简单快速的PHP MVC 框架。EllisLab 的工作人员发布了 CodeIgniter。许多企业尝试体验过所有 PHP MVC 框架之后,CodeIgniter 都成为赢家,主要是由于它为组织提供了足够的自由支持,允许开发人员更迅速地工作。 自由意味着使用 CodeIgniter 时,您不必以某种方式命名数据库表,也不必根据表命名模型。这使 CodeIgniter
默认情况下,CodeIgniter 中的 URL 被设计成对搜索引擎和人类友好。 不同于使用标准的 “查询字符串” 方法,CodeIgniter 使用基于段的方法: example.com/news/article/my_article 注解 在 CodeIgniter 中也可以使用查询字符串的方法,参见下文。 URI 分段 如果遵循模型-视图-控制器模式,那么 URI 中的每一段通常表示下面的
CodeIgniter WebSocket Library CodeIgniter WebSocket library. It allows you to make powerfull realtime applications by using Ratchet (Socketo.me & ratchet_client) Websocket technology. WebSocket Librar