2012-10-02 3 views
0

여기에 PHP에서 내 시도 캐치입니다PHP : 시도 및 캐치 예외

try{ 
    print (string)((int)$screenname+ 1); 
    $query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 1;'; 
    $result = mysql_query($query2) or die (mysql_error()); 

} 
catch(Exception $e){ 
    $query3 = 'SELECT * FROM callerdetail WHERE status="0" AND agent = "'.$agent.'" LIMIT 1'; 
    $result = mysql_query($query3) or die (mysql_error()); 
} 

내가 ScreenName이 기반으로 데이터를 얻을하려고하고 다음을 사용할 수없는 경우 내가 catch 블록의 SQL 문을 실행하고 싶습니다 .

불행히도 그것은 나를 위해 작동하지 않습니다. 데이터베이스에 화면 이름 = 2가 있지만 그 데이터를받는 대신 에이전트에 대한 새 데이터를 얻고 있습니다

아이디어가 있습니까? documentation에서

답변

4

: SELECT, SHOW, DESCRIBE를 들어

, 설명하고 다른 문 결과 집합,는 mysql_query를 (반환)는 오류에 성공 자원 또는 FALSE를 반환합니다.

따라서 catch 블록은 호출되지 않습니다. mysql_query가 예외를 throw하지 않기 때문입니다.

if 구조, 또는 던져 예외 자신을 사용합니다.

0

당신은 try 블록

$query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 0,1'; 

에서 쿼리에 ;이 제대로

이 이
1

가 왜 것 limit 사용 '예외가 던져 질을?' 아무것도 '예외'를 ​​유발하지 않습니다.

if 문이 좋지 않을까요?

$query2 = 'SELECT * FROM callerdetail WHERE screenname="'.(string)((int)$screenname+ 1).'" AND status="0" AND agent = "'.$agent.'" LIMIT 1;'; 
$result = mysql_query($query2) or die (mysql_error()); 

if(mysql_num_rows($result) > 0){ // Got a result 
    // Do something 
) else { 
    // Execute other query 
    $query3 = 'SELECT * FROM callerdetail WHERE status="0" AND agent = "'.$agent.'" LIMIT 1'; 
    $result = mysql_query($query3) or die (mysql_error()); 
} 
+0

이것은 선택되지 않았다고 믿을 수 없습니다. – r3wt