2012-10-02 139 views
0

這裏是在PHP中我嘗試捕捉PHP:嘗試和catch異常

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()); 
} 

我試圖讓基於屏幕名的數據,如果它是不可用的話,我想執行catch塊sql語句。

遺憾的是它沒有爲我工作。我在有我的數據庫中的網名= 2,而是得到的數據我收到新的數據劑

任何想法數據?

回答

4

documentation

對於SELECT,SHOW,描述,解釋等語句返回的結果集 ,請求mysql_query()成功返回的資源,或 錯誤FALSE。

因此,您的catch塊永遠不會被調用,因爲mysql_query不會引發異常。

使用if結構,或例外自己。

0

您在查詢中try塊

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

;和使用limit正確

1

爲什麼一個「異常被拋出?沒有什麼會造成「例外」。

會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