2017-04-18 9 views
0

메도 삽입 쿼리 또는 다른 쿼리에서 오류를 처리하는 가장 좋은 방법메도의 오류 처리에 가장 좋은 방법

모든 쿼리의 코드가 올바르게 표시됩니다. 예를 들어 여러 레코드가 whid를 삽입 할 때 insert() 메서드 출력은 배열입니다.

1 :

try{ 

       $db->pdo->beginTransaction(); 

       $deletes=$db->delete("table",array("c_id"=>$id)); 
       if($deletes===false || $deletes===null){ 
        throw new Exception(); 
       } 

       $res=$db->insert("tm_channel_admins",$insertsArray); 
       if($res===false || $res===null){ 
        throw new Exception(); 
       } 


       $db->pdo->commit(); 

      }catch (Exception $e){ 
       $db->pdo->rollBack(); 
       exit("Error"); 
      } 

2 : 진실하고 안전한 것입니다

$res=$db->insert("tm_channel_admins",$insertsArray); 
if($db->error()[0]!==0){ 
    throw new Exception(); 
} 

?

답변

-1

두 번째 것이 더 안전합니다. 첫 번째는 여전히 작동하지만 PDO 문 개체를 반환하기 때문에 좀 더 모호합니다. 두 번째는 PDO의 오류 처리 기능을 사용하므로 더 안정적입니다. 지금 (v1.4.5) medoo의 현재 버전으로

public function error() 
{ 
    return $this->statement ? $this->statement->errorInfo() : null; 
} 

https://github.com/catfan/Medoo/blob/6798b9698ee60ee98a4d342485904322922b2b3b/src/Medoo.php#L1469-L1472

http://php.net/manual/en/pdostatement.errorinfo.php

의 쿼리는 false를 반환합니다 :

  1. 개발자 모드
  2. 을 사용하여
  3. 또는 PDO-> prepare가 false/null을 반환하는 경우 (매우 신뢰할 수 없음)

개인적으로 나쁜 오류 처리 때문에 Medoo를 좋아하지 않습니다. 나는 다른 도구를 사용하고 싶다.

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [검토 중] (검토 중/리뷰/저품각 게시물/17361605) – FluffyKitten

+0

귀하의 답변은 여전히 ​​* 왜 * 두 번째 옵션이 더 안전하다고 생각하는지 설명하지 않습니다. – FluffyKitten

+0

위의 게시물을 다시 편집했습니다. – Andrew