2011-12-06 27 views
0

我收到同一查詢以下錯誤: 警告:請求mysql_query():拒絕訪問用戶「www數據」 @「localhost」的(使用密碼:NO)MySQL連接在相同的查詢上失敗。嘗試用默認的用戶重新連接

的錯誤只發生在來自任何特定IP的第一次嘗試中。刷新頁面後,腳本運行良好。更具體地說,我會在一個位置從瀏覽器運行它,並且會出錯。如果我刷新頁面,問題就解決了。直到我嘗試從另一個位置。

從我收集的信息中可以看出,它失去了與數據庫服務器的連接,並嘗試使用默認用戶名重新連接。令我困惑的是,它每次都會在相同的查詢上失敗。我們稱之爲query_X。在query_X之前運行多個查詢,包括選擇,插入和更新。 Query_X看起來是這樣的:

UPDATE game_users 
SET status_cd=$tmp_status, 
    expire_date=date_add('$currentExpire', interval $l_license_duration_days day) 
WHERE game_user_id=$l_game_user_id 

舉例來說,傳遞的變量是:

$tmp_status = 1; 
$currentExpire = '2011-12-05'; 
$l_license_duration_days = 30; 
$l_game_user_id = 1; 

這是關於這個查詢,使連接失敗,爲什麼不刷新頁面解決問題?

Fyi,我正在使用持久連接。

編輯:我剛剛嘗試從我昨晚試過的IP。我又收到了錯誤。這是腳本的第一次運行。第二次運行該頁面後,它運行良好。

編輯:它也會在第一次在特定的瀏覽器上運行時出錯,即使它在同一個IP上,也就是說它會在Firefox上出現錯誤,然後很好,一旦出現錯誤,等

編輯:我已經縮小到一個mail()函數發生在query_X之前。我仍然不知道爲什麼郵件函數正在關閉mySQL連接。我決定將郵件功能(可以正常工作併發送電子郵件)放在php文件的末尾,無論如何我都會關閉連接。這是一個黑客攻擊,但我已經花費了太多時間。

+2

「相同的查詢」?像什麼一樣? –

+0

我的意思是,頁面運行良好,直到它遇到我上面顯示的UPDATE查詢,又名query_X。 – user1034772

回答

0
  • 它看起來像你關閉連接之前,一些調用mysql_query()。訪問被拒絕的消息應該發生在mysql_connect()階段。
  • 你確定錯誤是在查詢中,而不是在連接/關閉功能?
+0

連接肯定失敗,並且由於郵件包含郵件使用mail()和一些額外的郵件頭而導致連接失敗。我沒有把它縮小到比這更遠的地步,但是,因爲它已經不再是我的問題了,因爲我已經將該郵件程序包括到了php文件的末尾。 – user1034772