而不是通過給你一條魚來回答你的問題,我會教你如何爲自己釣魚。
以下是我如何結構SQL ...
function example()
{
if (!failed_condition) {/*error handling*/}
else
{
$query1 = '';//Construct queries, NEVER put them in loops.
$result1 = mysql_query($query1);
if ($result1)
{
//success
$query2 = '';
$result2 = mysql_query($query2);
if ($result2)
{
//success
}
else {mysql_error_report($query2,mysql_error(),__FUNCTION__);}
}
else {mysql_error_report($query1,mysql_error(),__FUNCTION__);}
}
}
正如你所看到的唯一一次我縮進被另一個空間,當我遇到一個成功的SQL查詢。否則,我將查詢,錯誤和PHP函數的名稱交給錯誤處理服務。
以下是錯誤處理代碼...
function mysql_error_report($q,$e,$f)
{
if (!isset($database)) {include('database.php');}
if (isset($_SERVER['HTTP_USER_AGENT'])) {$ua = mysql_real_escape_string($_SERVER['HTTP_USER_AGENT']);} else {$ua = '';}
if (isset($database))
{
if (isset($_SESSION['member_id'])) {$id = $_SESSION['member_id'];} else {$id = 0;}
if (isset($_SESSION)) {$session = mysql_real_escape_string(session_id());} else {$session = 0;}
$ip = mysql_real_escape_string(getenv('REMOTE_ADDR'));
if (ip_version($ip)=='4')
{
$ipsql = "INET_ATON('$ip')";
}
else
{
$ip = ip2long6($ip);
$ipsql = mysql_real_escape_string($ip);
}
$query = mysql_real_escape_string($q);
$error = mysql_real_escape_string($e);
$function = mysql_real_escape_string($f);
if (isset($_SESSION['cms_browser'])) {$browser = mysql_real_escape_string($_SESSION['cms_browser'].' '.$_SESSION['cms_browser_version']);} else {$browser = '';}
if (isset($_SESSION['type'])) {$type = mysql_real_escape_string($_SESSION['type']);} else if (isset($_SESSION['cms_browser'])) {$type = 'Browser';} else {$type = 'Unknown';}
if (isset($_SERVER['REQUEST_URI'])) {$url = $_SERVER['REQUEST_URI'];} else {$url = '';}
$query1 = "INSERT INTO errors_sql (id_session, type, id_user, browser, date, ip, function, mysql_error, mysql_query, url, user_agent) VALUES ('$session', '$type', '$id', '$browser', NOW(), $ipsql, '$function', '$error', '$query', '$url', '$ua')";
$result1 = mysql_query($query1);
if (!$result1) {mysql_error_report_mail($q,$e,$f,$ua);}
}
else {mysql_error_report_mail($q,$e,$f,$ua);}
現在,你有什麼創建日誌讓你能夠在你需要能夠看到正在發生的事情采取行動。您需要啓用MySQL日誌記錄。由於這是沒有直接關係到這個問題,我會簡單地給你一個鏈接...
http://www.jabcreations.com/blog/enable-mysql-logging
一旦你那麼遠你只需要查看實時日誌文件,而無需手動的能力重新加載文件。我一直在使用BareTail,我以前使用TailforWin32。我使用語法突出顯示,藍色爲SELECT
,綠色爲UPDATE
,藍色爲INSERT
,紅色爲DELETE
。
將實時MySQL日誌打開並在遇到問題時檢入。
我也強烈建議記錄您的所有PHP,JavaScript和HTTP錯誤。如果你真的想全力以赴上踢donkies關閉錯誤報告的PHP最大感光度...
error_reporting(E_ALL);
...,它會強迫你使用isset()
。
隨時要求澄清和享受自己釣魚的能力。;-)
工作的答案,教你如何釣魚,而不是給你一條魚...... – John
你應該更新與你使用的所有相關的代碼位相關的問題。刪除我的答案,並由於問題不完整而被低估。 –
@BurhanKhalid我已更新我的問題與工作查詢 – EnexoOnoma