我通过在Raspberry Pi上设置LAMP,在家庭网络上设置了本地Web服务器。在做我的PHP脚本并连接到MySQL数据库时,我一直在使用localhost
。现在我在访问家庭网络之外的服务器时搞砸了,所以我设置了一个域名来访问服务器。
但我没有意识到我的代码仍然使用localhost
登录MySQL数据库。所以我决定将其更改为我的域名,现在它声明无法找到数据库所以我假设它没有登录,因此没有选择数据库。
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'] . "°C</p>";
echo "<p>" . $db_field['tempTimeStamp'] . "</p>";
}
}
else
{
echo "<p>Database NOT Found</p>";
}//endif
mysql_close($db_handle);
?>
这是通过服务器而不是localhost
登录MySQL的问题,还是防火墙问题(我在路由器上设置端口转发以访问服务器)?
感谢任何帮助,我是这个网络服务器的新手。
答案 0 :(得分:1)
localhost
是引用本地计算机的域名。
如果Web服务器和MySQL数据库服务器位于同一服务器上,则可以将localhost保留为“远程”数据库主机。 实际上,当您在服务器上运行脚本时,必须从DNS解析的所有地址都是从内部DNS服务器而不是从客户端DNS解决的。
从您向服务器发出请求的位置无关紧要。如果运行PHP的计算机的IP地址与数据库服务器的IP地址相同,则相对于Web服务器,数据库服务器的地址为localhost
。