2012-09-11 38 views
0

我正在将网站从Windows服务器迁移到雪豹服务器(确切地说是OSX 10.6.8),我遇到了几个兼容性问题mysql查询。每个查询返回一个“没有选择数据库”错误,我不能使它的头或故事。我对它做了一些研究,但无法找到我正在寻找的答案。以下是一些可能有助于解决我的问题的指标。将网站迁移到雪豹服务器后“没有选定数据库”

这里是我的连接文件包括:

$link = mysql_connect("localhost", "username", "password") or die("Invalid query: " . mysql_error()); 
mysql_select_db("tradeport", $link) or die("Database Connection Error: ".mysql_error()); 

这里是我的查询之一:

$sSQL="SELECT mainPhone FROM admins"; 
$result21=mysql_query($sSQL) or die ("MySQL err: ".mysql_error()."<br>".$sSQL); 

if($row21 = mysql_fetch_array($result21)) 
{$phoneMain = $row21['mainPhone'];} 

另一个需要注意的我想补充的是,当我开始在这个网站所有的迁移该PHP在页面源中显示。我有更正式的方式取代所有的PHP括号如下所示:

<? //before 

<?php //after 

我目前正在运行的PHP版本5.3.8和MySQL版本5.0.92。

任何信息都会大大降低。

+3

AHHHHHH mysql_functions!让他们去死,他们应得的。 – thatidiotguy

回答

0

I've tried that and it gives me this error in return: SELECT command denied to user ''@'localhost' for table – Trig3rz 20 mins ago

检查数据库用户设置了正确的权限 GRANT SELECT ON DB * TO用户名@ 'localhost' 的IDENTIFIED BY '通行证';

您可能想要检查原始服务器上的php.ini文件,以查看其中存在的差异。 <?是php短标记,它是在PHP ini文件中启用了这一行:

short_open_tag=On 
+0

是的,我检查了权限。我认为我的包含过程中存在一个问题,因为我可以从数据库连接文件进行查询并返回数据。 – Trig3rz

+0

就是这样!我的php.ini不幸的是由于某种原因关闭了short_open_tag。我打开它,重新启动apache,它的工作原理。非常感谢 – Trig3rz

0

尝试添加数据库名称来查询

"SELECT mainPhone FROM tradeport.admins" 
+0

我试过了,它给了我这个回报错误: 对于表 – Trig3rz

0

它始终是引用您的mysql_*mysqli_*(你应该使用)函数调用您的数据库连接好习惯。

尝试:

$result21=mysql_query($sSQL, $link) or die ("MySQL err: ".mysql_error()."<br>".$sSQL); 
+0

,用户'@'localhost'的SELECT命令被拒绝你会在每次查询时简单地对数据库连接文件执行一个require吗? – Trig3rz

+0

我认为,如果你有一个单独的包含文件的数据库连接,你只需要在需要数据库访问的任何脚本的开头就包含它一次。 –

0

你说你看到的错误消息“没有数据库中选择”,这使我怀疑,如果你是真正执行的代码通过mysql_select_db线,因为它的错误消息是“数据库连接错误:“,后面跟着mysql错误代码。

此外,包含文件获取用户名和密码的值在哪里?你只需要引用字面字符串,起初我假设它是出于安全目的。

我认为你提供的代码片段并没有向我们展示整个图片。 。

+0

这是一个非常不好的问题,但我只是分解明显的问题。你可以使用include函数,而不需要像这样的括号:include $ _SERVER ['DOCUMENT_ROOT']。“/ inc/header.php”; – Trig3rz

+0

这个提示也很有帮助。非常感谢你。 – Trig3rz

相关问题