2016-06-23 5 views
0

У меня есть приложение, которое должно сохранять каждую транзакцию в моей базе данных. Контроллер код выглядит следующим образом:Модель Codeigniter не сохраняется в базе данных

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

У меня огромная головная боль, потому что некоторые операции сохраняются в базе данных и другие не. Я думал, что это может быть какая-то нестабильность на моих серверах баз данных, поэтому я добавил цикл, чтобы попробовать еще раз, и войти сообщение об ошибке, если он не в состоянии спасти:

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

Проблема в том, что, когда она не сохраняет транзакцию, я не вижу сообщений в журнале ошибок.

Я был бы очень благодарен за любые идеи о том, что может быть причиной, или где я проскальзываю в этом коде, который я написал.

Cheers.

+0

Что такое '$ info'? – quantme

+0

Извините @quantme, $ info - это массив с информацией о транзакции. Я обновил свой вопрос. Благодаря! – grpaiva

+0

'$ this-> user ['id']' поступает из предыдущей/текущей операции базы данных или из сеанса? – quantme

ответ

0

Прежде всего, я хочу поблагодарить всех, кто помог мне в этом.

Я, наконец, нашел проблему. И это хрома, извините.

Модель и контроллер были хороши. Они сохраняли транзакцию в моей БД.

Но у меня есть плохо названная функция «courseForStudentCheck()», которая не только проверяет, зарегистрирован ли учащийся, но и удаляет его из моей БД. Мне нужно это для некоторых случаев, но я должен был назвать его по-другому, потому что непреднамеренно начал использовать его, чтобы проверить, был ли пользователь зарегистрирован. И тут проблема началась.

Еще раз спасибо!

0

Попробуйте использовать $this->db->set($data) так:

public function insertPurchaseForStudent($info){ 
    $this->db->set($info); 
    if($this->db->insert('compra'){ 
    return true; 
    } else { 
    return false; 
    } 
} 

Вы можете найти больше пример использования set() в CodeIgniter Manual Inserting Data

Смотрите, если он работает.

+0

Спасибо @MSI, я развертываю это исправление, и я обновлю вопрос, если это произойдет снова. – grpaiva

Смежные вопросы