通过PHP代码连接到数据库

时间:2012-07-21 05:41:25

标签: php mysql

我正在使用PHP编写游戏,并使用以下代码连接到数据库

//$sqldb=mysql_connect('godaddy.hostedresource.com', 'godaddyUserName', 'godaddyPassword') OR die ('Unable to connect to database! Please try again later.');
$sqldb=mysql_connect('localhost', 'root', 'mypassword') OR die ('Unable to connect to database! Please try again later.');

这里的诀窍是,如果我在生产服务器上,我会注释掉godaddy数据库;当我将代码上传到服务器时,我将注释掉localhost代码。

不幸的是,发生了不可原谅的事情,我上传了错误连接注释掉的代码;这导致24小时锁定客户! :(

有没有办法让代码告诉它是否在localhost服务器上,如果不是,那么它会查找godaddy连接吗?

6 个答案:

答案 0 :(得分:3)

你可以尝试这个来识别它是在live或localhost上

if($_SERVER["SERVER_NAME"] == "localhost" 
    && 
   $_SERVER["SERVER_ADDR"] == "127.0.0.1"){
  // in localhost
  $hostname = "localhost";
  $username = "localuser";
  $password = "localpassword";
}else{
  // not in localhost
 $hostname = "livehost";
 $username = "liveuser";
 $password = "livepassword";
}

如果无法连接到数据库但将错误保存到文件中则会失败。

if(!mysql_connect($hostname,$username,$password)){
 file_put_contents("mysql_connect.error",mysql_error(),FILE_APPEND);
 die("Couldn't connect to database");
}

一个建议,尽量不要使用mysql_ *,切换到PDO或mysqli ..

答案 1 :(得分:1)

if ($_SERVER['SERVER_NAME'] == 'the.name.of.your.devel.server') {
    $host = 'localhost';
} else {
    $host = 'name.of.godaddy.server';
}
$sqldb = mysql_connect($host, ....);

答案 2 :(得分:0)

我通常使用获取网站的URL /域的方法?这可以在某些情况和设置中起作用。否则,如果您使用固定IP操作,也可以使用此方法

使用$ _SERVER

查看方法

PHP $_SERVER

答案 3 :(得分:0)

一种方法是检查外部IP地址并查看您的位置。解决方案应该通过查看$_SERVER全局变量中的属性来呈现。

答案 4 :(得分:0)

我有一个很好的建议:你编写一个游戏,游戏是一个大程序,你不要直接在大程序中使用mysql *函数,因为你自己应该处理它们,比如错误处理。我建议你使用DB -Handler。请谷歌:DB-Handler PHP

答案 5 :(得分:0)

正如其他人所提到的,您可以使用$_SERVER变量获取运行脚本的当前站点。但是,我想提供一种替代解决方案。

您可以在您的网站(本地和制作)中创建一个文件夹,例如config,然后在其中存储配置文件,例如config.php,其中包含以下内容:

<?php
// Local
$db_host = 'localhost';
$db_username = 'root';
$db_password = 'mypassword';
?>

生产:

<?php
// Production
$db_host = 'godaddy.hostedresource.com';
$db_username = 'godaddyUserName';
$db_password = 'godaddyPassword';
?>

并禁止访问目录中包含.htaccess文件的目录,如:

deny from all

然后,在您的PHP代码中,执行以下操作:

<?php
require_once($_SERVER["DOCUMENT_ROOT"] . "/config/config.php");
$sqldb=mysql_connect($db_host, $db_username, $db_password) OR die ('Unable to connect to database! Please try again later.');
?>

现在,只需将不同的配置文件保留在原处并上传其他所有内容,这样您的代码就会在运行时访问不同的配置文件。

此外,.htaccess文件应该阻止任何人通过HTTP访问该文件,并且使用PHP标记中的文件内容以及.php扩展名应该阻止任何人看到任何内容,如果他们能够访问该文件(PHP将在呈现之前解析该文件,并且不会输出任何内容)。