MySQL表存在于服务器上,但无法从PHP访问它


MySQL table exists on server but cannot access it from PHP

我使用PHPMyAdmin给数据库添加了一个新表;当试图从PHP页面访问它时,我得到了可怕的MySQL错误"表不存在"。
数据库连接数据是OK的,它们在同一页面的上面几行中用于访问同一数据库中的另一个表。如果我做SHOW TABLES在PHPMyAdmin新表列出;如果我从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();
}

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

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

字段名不区分大小写。

对于数据库和表名,它取决于底层操作系统。标识符区分大小写

答案很简单:一些打字错误或其他愚蠢的错误,像这样:你连接错误的服务器,编辑错误的文件或类似的东西。仔细检查每件事。
没有特别的错误导致

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

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

SELECT `value` FROM `pivot`;