2012-05-01 2 views
4

CodeIgniter의 테이블에서 update_batch()를 실행 중이며 성공했는지 확인하고 싶습니다.CodeIgniter에서 update_batch()가 성공했는지 확인하십시오.

나는 affected_rows()를 사용하여 시도했다, 그러나 그것은 단지 그것을 확실히 그것을 잘라하지 않도록 수정 된 양식 필드의 수를 계산 :

$this->db->update_batch("sections", $data, "alias"); 

log_message("debug", "items in form: ".count($data)); 
// items in form: 3 

log_message("debug", "rows updated: ".$this->db->affected_rows()); 
// rows updated: 0-3 
// depending on whether anything was actually changed on the form 

return ($this->db->affected_rows() == count($data)); // unreliable 

그것은에 대한 매우 간단한 일처럼 보인다을 배치 업데이트 기능에서 질문하십시오. 내가 놓친 부분이 있거나 그냥 일괄 업데이트 코드를 작성해야합니까?

+0

CI의 'update_batch' 대신에 트랜잭션을 사용하고 있습니까? –

+0

나는 매우 자주 업데이트되지 않는 간단한 CMS를위한 것이기 때문에이 프로젝트에서 MyISAM을 사용하고 있습니다. 잘 부르면, InnoDB로 전환하는 것을 고려할 수 있습니다. – Andrey

답변

0

는이 도움이 true 또는

return $this->db->update_batch("sections", $data, "alias"); 
+0

이것은 내가 원래 시도한 현재 안정 버전 (작성 당시 2.1.0)에서는 작동하지 않습니다. 그러나 Git repo를 보면 3.0의 dev 브랜치에 이미 구현되어 있습니다 : https://github.com/EllisLab/CodeIgniter/blob/develop/system/database/DB_driver.php – Andrey

4
$this->db->trans_start(); 
    $this->db->update_batch($table, $update, $variable); 
    $this->db->trans_complete();   
    return ($this->db->trans_status() === FALSE)? FALSE:TRUE; 

거짓 희망을 반환하는 간단한 명령을 사용! 건배!

+0

이것이 작동한다면, 그것을 표시 할 수 있습니까? 해결책으로? 아니면이 대답에 문제가 있습니까? – Programster

+0

궁금한가요? 이 예제에서 트랜잭션을 사용하는 이유는 무엇입니까? 문서 예제에는 트랜잭션이 필요하지 않습니다. –

관련 문제