尝试连接到另一个文件中的数据库时,无法使用常量

时间:2012-12-12 13:33:13

标签: php mysql database constants undefined

我有一个名为config.php的文件,其中我定义了4个常量:

<?php

define('HOST','localhost');
define('USER','root');
define('PASSWORD','');
define('DATABASE','some_database');

?>

我想要做的是在另一个名为database.php的php文件中使用request_once函数调用此脚本,该文件将使用此文件中的常量进行连接

<?php
  require_once('config.php');
  $connect = mysql_connect(HOST,USER,PASSWORD);
  $select_db = mysql_select_db(DATABASE);
?>

我得到的是主机,用户,密码和数据库未定义。这是为什么?这是我用于连接的示例简化代码,但问题的本质在这里。提前谢谢。

2 个答案:

答案 0 :(得分:1)

PHP默认情况下不显示未定义常量的注释。因此,如果您使用未定义的常量PHP,则将其简单地视为字符串。例如,

<?php
//define('__TEST__', 'foo');

print __TEST__; //Will print __TEST__ and raise E_NOTICE if it's enabled

如果您取消注释define()以上,PHP将打印foo而不会发出通知。

我个人建议你做一些更深入的测试:

0)在config.php中声明error_reporting(E_ALL)
1)在包含此文件之前检查文件是否存在且可读 2)在使用常量之前检查常量是否已定义

最后,它希望如此:

文件:config.php

<?php

error_reporting(E_ALL);

define('HOST','localhost');
define('USER','root');
define('PASSWORD','');
define('DATABASE','some_database');

文件:dbconnection.php

<?php

//require() will produce FATAL error if inclusion fails, so we're OK
require_once('config.php'); 


if ( defined('HOST') && defined('USER') && defined('PASSWORD') && defined('DATABASE') ){

 $connect = mysql_connect(HOST,USER,PASSWORD);
 $select_db = mysql_select_db(DATABASE);

} else {

  trigger_error('Some constants are missing', E_USER_ERROR);
}

答案 1 :(得分:0)

你可以尝试Include()只是为了看看它是否有所作为。如果您正在使用本地计算机,也可以使用:

require_once(dirname(__FILE__) . "/config.php");

你应该查看MYSQLI或PDO,因为mysql函数现在已被折旧:

 define("DB_HOST", "");
 define("DB_USERNAME", "");
 define("DB_PASSWORD", "");
 define("DB_NAME", "");

    $Mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
        if ($Mysqli->connect_errno)
        {
            echo "Failed to connect to MySQL: (" . $Mysqli->connect_errno . ") " . $Mysqli->connect_error;
            $Mysqli->close();
        }