2012-06-05 3 views
2

PDO (예, 나는 아직도 oldschool mysql 드라이버입니다.)로 이동하는 것이 바쁩니다. 그리고 전에 예외를 사용한 적이 없습니다. 아래 코드는 내가 지금까지 이해하고있는 것을 기반으로합니다. 내 응용 프로그램에서 3 개의 별도 데이터베이스 연결을 만들 것이며, 이중 2 개는 mysql과 1 mssql이 될 것입니다 (따라서 다른 유형의 경우).예외적 인 예외를 이해하는데있어서 매우 좋지 않음.

문제는 잘못된 연결 값을 제공하더라도 스크립트를 계속 처리하고 계속해서 오류가없는 것처럼 "캐치"를 건너 뜁니다.

try { 
     if("condition" != "conditions") { 
      throw new Exception("Oops I did it again"); 
     } 
catch(Exceptions as e) { 
     echo $e->getMessage(); 
} 

가 나는 또한 PDO는 예외 통해 내가 그나마 있도록하는 던져있을 것이라는 점을 이해하지만 그냥 작동하지 않습니다, 도움도 약간에게 저에 관해서는 더 감독을 적어주세요 : 나는 기초가되어야한다고 이해 나는이 개념에 대해 오해하고있는 무슨 :

$handler = new PDO("mysql:host".$cred['credentials']['server'].";dbname=".$cred['credentials']['database'].", ".$cred['credentials']['username'].",".$cred['credentials']['password']); 

그리고 B가 있어야합니다

// connect(): Connect to a database (MySQL): 

private function connect($cred) { 
    $type = $cred['type']; 
    if($type == "mysql") { 
     try { 
      $handler = new PDO("mysql:host".$cred['credentials']['server'].";dbname=".$cred['credentials']['database'].", ".$cred['credentials']['username'].",".$cred['credentials']['password']); 
      if($cred['errors'] == 'exception') { 
       $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      } elseif($cred['errors'] == 'warning') { 
       $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 
      } else { 
       $handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT); 
      } 
     } 
     catch(PDOException $e) { 
      $this->informer("FATAL","An error has occured trying to connect to the connection (".$cred['name'].") -".$e->getMessage()); 
      return false; 
     } 
     return $handler; 
    } 
} 
+1

그리고'$ cred [ 'errors']'가''exception ''으로 설정되어 있다고 확신합니까? –

답변

0

문제 발견 내 PDO 이의 생성에 위의 구문 문제가 있었다, 내가했다 EEN : 난 그냥 여기 추측하고있어,하지만 생성자에서 PDO 예외를받을

$handler = new PDO("mysql:host=".$cred['credentials']['server'].";dbname=".$cred['credentials']['database'].", ".$cred['credentials']['username'].",".$cred['credentials']['password']); 
+2

그리고 그건 PDOException을 던지지 않았습니까 ?? –

0

new 호출 속성을 통과 할 수 있습니다 :

new PDO($dsn, $user, $password, array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
)); 

업데이트

그냥 테스트했지만 속성을 전달하지 않고도 예외를 throw합니다.

관련 문제