2011-11-14 57 views
0

我想用我自己的錯誤處理,我的第一個想法是這樣的:如何在自己的錯誤處理函數中使用mysql_errno()?

// db connection 
$conn = conn(); 
if(!$conn) 
$aErrors[] = 'Fout: Geen database verbinding!'; 


function db_error($conn) 
{ 
if(mysql_errno($conn) == 0) 
    return true; 
else 
{ 
    // log! and global $aErrors[] = mysql_errno($conn) 
    return false; 
} 
} 

$q = "SELECT 
    xusername, email 
FROM 
    terra_user 
WHERE 
    ID = '".$_GET['ID']."' 
LIMIT 1"; 

$exec = mysql_query($q); 

// error check 
if(db_error($exec)) 
{ 
echo'teeeeeest!'; 
} 
else 
{ 
    $aRow = mysql_fetch_assoc($exec); 

    $uitgever = $aRow['username']; 
    $uitgever_email = $aRow['email']; 
    echo'Xteeeeeest!'; 
} 

,但我得到了一個錯誤:

Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in xxxx

在這種情況下,mysql_erro()返回一個數> 0,所以它看起來不錯,除了鏈接源不正常?

如果我使用mysql_errno($conn)我得到:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in xxxxxx

在這種情況下,mysql_erro()返回0!

對於這段代碼,我用一個錯誤的名字改變了一個字段。把一個額外的x用戶名:) $_GET['ID']已經測試ctype_digit($_GET['ID'])

我在做什麼錯在這裏?

+0

這個功能究竟有什麼意義? –

+0

我很懶,所以執行查詢後,我只需檢查dberror()是否返回true,如果爲false,它將處理記錄我的錯誤,發送郵件/短信。但這只是一個開始。當這部分工作時,我會擴展它。 – Terradon

+0

可能的重複[Warning:mysql_fetch_ *期望參數1是資源,布爾給定錯誤](http://stackoverflow.com/questions/11674312/warning-mysql-fetch-expects-parameter-1-to-be-resource -boolean-given-error) –

回答

1

我根本看不出這樣的功能。你有$ exec執行你的錯誤「處理」,這就夠了。

// db connection 
$conn = conn(); 
if(!$conn) { 
    $aErrors[] = 'Fout: Geen database verbinding!'; 
} 

$q = "SELECT xusername, email FROM terra_user WHERE ID = ".(int)$_GET['ID']." LIMIT 1"; 
$exec = mysql_query($q) or trigger_error(mysql_error()); 

// error check 
if(!$exec)) 
{ 
    $aErrors[] = 'Fout: Geen database verbinding!'; 
} 
else 
{ 
    $aRow = mysql_fetch_assoc($exec); 
    $uitgever = $aRow['username']; 
    $uitgever_email = $aRow['email']; 
    echo'Xteeeeeest!'; 
} 

雖然我沒有意識到將錯誤收集到數組中。如果這是嚴重的錯誤,不需要等待另一個 - 只有一個就足夠了。如果這不是一個嚴重的錯誤 - 爲什麼打擾用戶呢?

+0

謝謝!我在錯誤的問題上浪費了我的大腦和時間! – Terradon

+0

這只是開始。 $ aErrors對我來說只是一個調試工具。 $ aMessages是訪問者的數組元素。 – Terradon

+0

爲什麼不只是記錄所有的錯誤信息? –