2016-04-23 178 views
-1

我在我的家庭网络上设置了一个本地Web服务器,在我的Raspberry Pi上设置了一个LAMP。在做我的PHP脚本并连接到MySQL数据库时,我一直在使用localhost。现在我正忙于在家庭网络之外访问服务器,所以我设置了一个域名来访问服务器。 但我没有意识到的是我的代码仍然使用localhost登录到MySQL数据库。所以我决定将其更改为我的域名,现在它声明数据库无法找到,所以我假设它没有登录,因此没有选择数据库。PHP本地主机到URL

php脚本:

<?php 
     //thermReading1.php 
     $servername = "myservername.com"; //example URL 
     $username = "user"; 
     $password = "password"; 
     $dbname = "database"; 
     //create connection 
     $db_handle = mysql_connect($servername,$username,$password); 
     $db_found = mysql_select_db($dbname,$db_handle); 
     $thermID = "'T00'"; 
     $userID = "'1'"; 
     if($db_found) 
     { 
       $sql = "SELECT * FROM tblTempReading" 
       $result = mysql_query($sql); 
       while($db_field = mysql_fetch_assoc($result)) 
       { 
         echo "<p>" . $db_field['temp'] . "&deg;C</p>"; 
         echo "<p>" . $db_field['tempTimeStamp'] . "</p>"; 
       } 
     } 
     else 
     { 
       echo "<p>Database NOT Found</p>"; 
     }//endif 
     mysql_close($db_handle); 
?> 

这是通过服务器,而不是localhost登录到MySQL或将是防火墙问题一个问题(我已经设置了端口转发在我的路由器来访问服务器) ?

任何帮助表示赞赏,我是这个网络服务器的新东西。

+0

您是否试图访问托管在与Raspberry Pi不同服务器上的MySQL?这是我对你的问题的解释,但到目前为止的两个答案都假设不然。 – MortimerCat

+0

停止使用**弃用,并且从PHP7中删除了** mysql_ *函数。迁移到PDO并开始使用准备好的语句。 –

+0

@MortimerCat没有MySQL托管在Rpi上,我认为使用服务器名称可能是更好的做法,但我认为可以认为使用'localhost' – EoinScully

回答

1

localhost是指本地计算机的域名。

如果Web服务器和MySQL数据库服务器位于同一台服务器上,则可以将localhost作为“远程”数据库主机。 实际上,当您在服务器上运行脚本时,必须从DNS解析的所有地址都从内部DNS服务器解析,而不是从客户端DNS解析。

从您向服务器发出请求的位置无关紧要。如果运行PHP的计算机的IP地址与数据库服务器的IP地址相同,则相对于Web服务器,数据库服务器的地址为localhost