Codeigniter模型不保存在数据库中

时间:2016-06-23 21:57:19

标签: php mysql codeigniter activerecord

我有一个应用程序应该保存我的数据库上的每个事务。控制器代码如下:

$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;
    }
  }
}

问题是,当它不保存事务时,我在错误日志中看不到任何消息。

我真的很感激任何关于可能原因的想法,或者我在我编写的代码中的哪些地方滑落。

干杯。

2 个答案:

答案 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;这不仅会检查学生是否已注册,还会从我的数据库中删除它。在某些情况下我需要它,但我应该以不同的方式命名它,因为无意中我开始使用它只是为了检查用户是否注册。那就是问题出现的地方。

再次感谢!