我想在我的php應用程序中做一個透明的mysql_error日誌記錄。我已經做了以下尚未:透明的mysql_error日誌記錄:我如何讀取mysql_error()兩次?
function mysql_query_log_error($query) {
$debug_trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
$caller = $debug_trace[1];
$file = substr($caller[file], strrpos($caller[file], '/')+1);
$line = $caller[line];
$error = mysql_error();
$error_query = "INSERT INTO Common.ERRsql SET "
."errQuery = '".mysql_real_escape_string($query)."', "
."errText = '".mysql_real_escape_string($error)."', "
."errDate = NOW(), "
."errFile = '".mysql_real_escape_string($file)."', "
."errLine = '".mysql_real_escape_string($line)."' ";
mysql_query($error_query);
}
function mysql_query_log($query) {
$result = mysql_query($query) or mysql_query_log_error($query);
return $result;
}
但是,當我在mysql_query_log_error()
函數read mysql_error()
,原調用無法訪問mysql_error()
(因爲它返回一個空字符串,那麼它的「讀出」)。
我該如何以透明的方式做到這一點,我的意思是,mysql_error()
將保持不變?
你不覺得使用相同的存儲只是產生一個錯誤不是太明智? –
是的,但大部分的錯誤來自錯誤的SQL語句(表名改變,列更改,字符串處理不正確等) – netmano