2010-05-06 136 views
3

擁有包含350個名稱列表的下拉框的PHP/MySQL表單。當選擇任意一個隨機名時,它有時會起作用&顯示來自數據庫的關於該名稱的信息,有時該表格會給出錯誤「No Database Selected」。PHP/MySQL中間歇的「沒有數據庫選擇」?

下面是我嘗試過,稻草幾乎抓,因爲我不是一個程序員:

  • 從200 /etc/my.cnf中增加MAX_CONNECTIONS到2000(即使只有4-5連接完成,這是一個不常使用的服務器)
  • 更改mysql_pconnect到的mysql_connect
  • 添加字真該連接字符串:

    $的MySQL = mysql_pconnect($ hostname_mysql,$ username_mysql,$ password_mysq l,true)或trigger_error(mysql_error(),E_USER_ERROR);

  • 改變字require_once要求在這條線:

    [PHP要求( '/家庭/用戶/連接/ mysql.php'); ?]

  • 啓用MySQL & PHP查詢&錯誤記錄。 (記錄錯誤)

下面是代碼:[刪除舊惡意代碼]

更新:從下面羅布阿波達卡工作答案。

+0

您確定您的'mysql_select_db'調用實際上總是包含要選擇的數據庫嗎?做一個'$ mysql'的測試輸出來查看是否有空的實例。 – 2010-05-06 15:52:59

+0

我加了echo $ mysql;它給了我「資源ID#3」。我添加了一些額外的錯誤處理,它給了我: SQL錯誤[256](1046)沒有選擇數據庫 查詢:SELECT * FROM tbl LIMIT 1 在行65,PHP 5.1.6(Linux) – ANE 2010-05-06 16:11:39

回答

3

此行:mysql_select_db($database_mysql, $mysql);在您提供的腳本中多次出現。由於$database_mysql的值看起來沒有變化,因此我將刪除該行的所有實例,並將其置於mysql_pconnect/mysql_connect line之後。

+0

這似乎有工作。在完全按照您的建議編輯這兩個文件之後,我測試了在下拉框中反覆選擇隨機名稱,並且每次都可以正常工作。我會讓其他人來測試並做出絕對肯定,但到目前爲止,我對您的修復有信心。非常感謝Rob! (順便說一句,太酷了。) – ANE 2010-05-06 17:28:09

0

我的問題是在另一個序列化對象(A)中序列化的數據庫連接對象(B)。有時,根據在對象A未被序列化之前發生的事情,對象B將執行一個調用,它具有一個空數據庫名稱,因爲它已經丟失。

我們用一些MySQL查詢結果「SELECT DATABASE()」的echo結果來散佈我們的代碼,直到我們發現默認數據庫的間歇性丟失發生在哪裏。希望這可以幫助!