2010-05-06 40 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结果来散布我们的代码,直到我们发现默认数据库的间歇性丢失发生在哪里。希望这可以帮助!