我有一个应用程序应该保存我的数据库上的每个事务。控制器代码如下:
$info = array(
'student_id' => $this->user['id'],
'transaction_id' => $ref,
'value' => $amount,
'final_value' => $final_value,
'payment_status' => '0',
'date' => date('Y-m-d'),
);
$this->load->model('student_model');
if($this->student_model->insertPurchaseForStudent($info)){
// Some other code here
}
这是我的模特('student_model'):
public function insertPurchaseForStudent($info){
if($this->db->insert('compra', $this->db->escape($info))){
return true;
}else{
return false;
}
}
我遇到了极大的麻烦,因为有些交易保存在数据库中而其他交易则没有。我认为我的数据库服务器可能存在某种不稳定性,所以我添加了一个 for loop ,尝试不止一次,如果无法保存则记录错误消息:< / p>
$i = 1;
for ($i == 1; $i <= 5; $i++) {
if($this->student_model->insertPurchaseForStudent($info)){
// to leave the loop
$i = 7;
// Some other code here
}else{
sleep(3);
switch($i){
case 2 :
log_message('error', 'Second attempt to add transaction');
break;
case 3 :
log_message('error', 'Third attempt to add transaction');
break;
case 4 :
log_message('error', 'Fourth attempt to add transaction');
break;
case 5 :
log_message('error', 'Fifth attempt to add transaction');
break;
case 6 :
log_message('error', 'Sixth attempt, giving up');
break;
}
}
}
问题是,当它不保存事务时,我在错误日志中看不到任何消息。
我真的很感激任何关于可能原因的想法,或者我在我编写的代码中的哪些地方滑落。
干杯。
答案 0 :(得分:0)
尝试使用$this->db->set($data)
,如下所示:
public function insertPurchaseForStudent($info){
$this->db->set($info);
if($this->db->insert('compra'){
return true;
} else {
return false;
}
}
您可以在CodeIgniter Manual Inserting Data
中使用set()
找到更多示例
看看它是否有效。
答案 1 :(得分:0)
首先,我要感谢所有帮助过我的人。
我终于找到了问题所在。它很蹩脚,我很抱歉。
模型和控制器都很好。他们正在我的数据库中保存交易。
但我有一个命名不好的功能&#39; courseForStudentCheck()&#39;这不仅会检查学生是否已注册,还会从我的数据库中删除它。在某些情况下我需要它,但我应该以不同的方式命名它,因为无意中我开始使用它只是为了检查用户是否注册。那就是问题出现的地方。
再次感谢!