【问题标题】:MySQL table exists on server but cannot access it from PHPMySQL 表存在于服务器上,但无法从 PHP 访问它
【发布时间】:2013-01-03 02:47:19
【问题描述】:

我使用 PHPMyAdmin 向数据库添加了一个新表;当试图从 PHP 页面访问它时,我得到了可怕的 MySQL 错误“表不存在”。
数据库连接数据没问题,上面几行在同一个页面上使用它们来访问同一个数据库中的另一个表。如果我在 PHPMyAdmin 中执行SHOW TABLES,则会列出新表;如果我从 PHP 页面执行此操作,则新表不会出现在列表中。 与数据库中的所有其他表一样,新表的引擎是 MyISAM。我只能通过 PHPMyAdmin 访问数据库服务器。

抱歉,忘记密码了,这里是:

$db = mysql_connect ($db_host, $db_user, $db_password) or 
die("Error message here");
$db_select = mysql_select_db($db_name, $db)or die("Error message here");


$query = ("SELECT * FROM `old_table`");
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) 
{
// do stuff - here it works
}


$query = ("SELECT * FROM  `new_table`");
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) 
{
// do stuff - here it does not work
echo mysql_error();
}

【问题讨论】:

  • PHP 脚本连接的用户是否与您通过 PMA 连接的用户相同?用户可能无权访问该表。
  • 尝试从 PHP 运行“SHOW TABLES”并检查是否列出了新表
  • 不,它没有出现在列表中。

标签: php mysql


【解决方案1】:

在 Unix 上,表名区分大小写。在 Windows 上,它们不是。有趣,不是吗?有点像他们各自的文件系统。你认为这是巧合吗?

这可能取决于表类型; MyISAM 在你的情况下。

字段名称不区分大小写。

对于数据库和表名,取决于底层操作系统。 Identifier Case Sensitivity

【讨论】:

  • 检查表名是否正确,是否输入错误
【解决方案2】:

答案很简单:一些拼写错误或其他类似这样的愚蠢错误:您连接错误的服务器、编辑错误的文件或类似的东西。只需仔细检查所有内容。
没有特别的错误导致这个

【讨论】:

  • 你是对的:没有理由这样做。我正在再次检查所有内容,但没有发现任何问题。
【解决方案3】:

答案是:表名或至少一个字段名是保留字。

要解决这个问题,您可以用重音符(`)将字段和表名括起来,例如:

SELECT `value` FROM `pivot`;

【讨论】:

    猜你喜欢
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多