【问题标题】:Intermittent "No Database Selected" in PHP/MySQL?PHP / MySQL中间歇性“未选择数据库”?
【发布时间】:2011-02-16 11:14:22
【问题描述】:

有一个 PHP/MySQL 表单,其中包含一个包含 350 个名称列表的下拉框。选择任何随机名称时,有时它会起作用并显示数据库中有关该名称的信息,有时表单会显示错误“未选择数据库”。

这是我尝试过的,因为我不是程序员,所以几乎是在抓稻草:

  • 将 /etc/my.cnf 中的 max_connections 从 200 增加到 2000(即使只建立了 4 到 5 个连接,而且它是一个很少使用的服务器)
  • 将 mysql_pconnect 更改为 mysql_connect
  • 将单词 true 添加到此连接字符串中:

    $mysql = mysql_pconnect($hostname_mysql, $username_mysql, $password_mysql, true) 或 trigger_error(mysql_error(),E_USER_ERROR);

  • 在这一行将单词 require_once 改为 require:

    [?php require('/home/user/Connections/mysql.php'); ?]

  • 启用 MySQL 和 PHP 查询和错误记录。 (没有记录错误)

这里是代码:[删除了旧的坏代码]

更新:来自 Rob Apodaca 的工作回答如下。

【问题讨论】:

  • 您确定您的mysql_select_db 调用实际上总是包含要选择的数据库吗?做一个$mysql的测试输出,看空的时候是否有实例。
  • 我添加了 echo $mysql;它给了我“资源 ID #3”。我添加了一些额外的错误处理,它给了我: SQL Error [256] (1046) No database selected Query : SELECT * FROM tbl LIMIT 1 On line 65, PHP 5.1.6 (Linux)

标签: php mysql linux forms connection


【解决方案1】:

这一行:mysql_select_db($database_mysql, $mysql); 在您提供的脚本中多次出现。由于$database_mysql 的值似乎没有改变,我将删除该行的所有实例并将其放在mysql_pconnect/mysql_connect line 之后。

【讨论】:

  • 这似乎奏效了。在完全按照您的建议编辑这两个文件后,我一遍又一遍地测试在下拉框中选择随机名称,并且每次都可以正常工作。我正在让其他几个人进行测试并确保绝对确定,但到目前为止,我对你的修复很有信心。非常感谢罗伯! (顺便说一句,姓氏也很酷。)
【解决方案2】:

我的问题是在另一个序列化对象 (A) 中序列化的数据库连接对象 (B)。有时,根据对象 A 被反序列化之前发生的情况,对象 B 将使用空数据库名称执行 mysql_select_db() 调用,因为它已丢失。

我们在代码中添加了一些 MySQL 查询“SELECT DATABASE()”的结果的回声,直到我们发现默认数据库的间歇性丢失发生在哪里。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2012-01-20
    • 2014-03-25
    • 2017-11-03
    • 1970-01-01
    • 2012-12-06
    • 2013-11-24
    • 2015-06-13
    • 2014-05-14
    相关资源
    最近更新 更多