我正在使用Bennett Stone php包裝類進行mysqli操作。班級工作正常,沒有任何問題。裏面有一個函數(在下面分享),它發送一封電子郵件給管理員,用於任何類型的mysqli錯誤。得到錯誤在類內部拋出php腳本名稱
問題
有使用這個類的腳本100的,我無法找出哪些腳本拋出的任何特定的錯誤。
我想
我想要得到錯誤源於劇本的內部類從那裏起源查詢的完整路徑。例如,test.php包含查詢&後執行,如果任何錯誤出來,然後我想錯誤處理函數內的test.php的完整路徑以及錯誤細節(下面共享)。
我能做些什麼
類修改我可以用我自己的
我得到的信息是這樣做的:
Error at 2016-08-23 05:44:18:
Query: SELECT email FROM users WHERE
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
錯誤處理功能
public function log_db_errors($error, $query)
{
$message = '<p>Error at '. date('Y-m-d H:i:s').':</p>';
$message .= '<p>Query: '. htmlentities($query).'<br />';
$message .= 'Error: ' . $error;
$message .= '</p>';
if(defined('SEND_ERRORS_TO'))
{
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: Admin <'.SEND_ERRORS_TO.'>' . "\r\n";
$headers .= 'From: systems<[email protected]'.$_SERVER['SERVER_NAME'].'.com>' . "\r\n";
mail(SEND_ERRORS_TO, 'Database Error', $message, $headers);
}
else
{
trigger_error($message);
}
if(!defined('DISPLAY_DEBUG') || (defined('DISPLAY_DEBUG') && DISPLAY_DEBUG))
{
echo $message;
}
}
[debug_backtrace(HTTP:/ /php.net/debug_backtrace)可能會幫助你。 –
由於@JonStirling的狀態 - [Debug Backtrace](http://php.net/debug_backtrace)是你想要在這裏探索的 – Martin
@Martin,如下所述,PHP中的例外默認提供了一個堆棧跟蹤,因此存在無需手動編寫任何代碼。 –