2011-11-15 5 views
0

쿼리가 성공적이지 않은 경우 mysql 오류 및 쿼리를 전자 메일로 보내도록 디버그 기능을 만들었습니다.mysql_query가 성공적이지 않은 경우 오류가 표시됩니다.

mysql_query($sql) or $this->debug->dbErrors($sql); 

그리고 기능은 다음과 같습니다 :

내가 같이 호출

function dbErrors($sql = ''){ 
    if($this->doDebug) 
     echo mysql_error()."<br/>".$sql; 
    else 
     @mail(hidden_email,$_SERVER['HTTP_HOST'].' Mysql Error','A error occured in '.$_SERVER['HTTP_HOST'].':<br/>'.mysql_error().'<br/>'.$sql); 
} 

문제는 쿼리가 잘 실행하더라도 내가 이메일을 수신하고있어 점이다 (적어도 데이터는 삽입하고 다 잘 됐어.)

내가 뭘 잘못하고 있니?

감사

+0

$ this- 무엇입니까> doDebug? –

+0

전자 메일에 오류가 있습니까? –

+0

@AurelioDeRosa doDebug는 개발 또는 프로덕션 상태에 따라 오류가 표시되는 방식을 설정하는 데 사용되는 전용 PHP var입니다. 그것은 화면이나 전자 메일로 인쇄 메시지를 디버깅합시다. 감사합니다 – jribeiro

답변

1

그 '또는'구조가 문제를 일으킬 수있는, 내가 좋아하는 뭔가를 할 것이다 :

$result = mysql_query($sql); 

if (!$result) { 
    $this->debug->dbErrors($sql); 
} 

이 방법은 $ 결과가 부울 거짓 있는지 확인하기 위해 명시 적으로 확인을하고을 (쿼리가 유효하지 않음) 또는 리소스 (쿼리가 유효 함). 중요한 것은 실제로 문제가있는 경우에만 $this->debug->dbErrors()을 호출하는 것입니다. 그렇지 않으면 코드 작성 방법에 따라 모든 쿼리가 전자 메일로 전송됩니다.

+0

Anon downvotes ftw! –

+0

안녕하세요 !! 답변 해주셔서 감사합니다. 왜 downvote 모르겠어요. 어쨌든, 나는 첫 번째 표현이 사실이라면 두 번째 표현만을 수행 할 것이라고 생각했습니다. 논리 중 하나 또는 조건 중 하나가 참이면 항상 참을 반환합니다. 맞습니까? 첫 번째 질문이 사실이라면 수표를 계속 사용함에있어 요점은 무엇입니까? 하지만 PHP가 실제로 개발자가 아닌 질문을 평가하는 경우에도) 내일 확인할 것입니다! 감사합니다 – jribeiro

0

또는 같은 간단한 일 :

mysql_query($sql) or die(dbErrors($sql)); 
+0

대답 Liam하지만 주셔서 감사하지만 디버그 기능 (사실 클래스의 함수입니다) 그것이 중요하지 않으면 죽지 않는 것입니다. 어쨌든 나는 그것이 내가하는 일과 어떻게 다른지를 보지 못한다. 감사 – jribeiro

관련 문제