我有一个名为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);
?>
我得到的是主机,用户,密码和数据库未定义。这是为什么?这是我用于连接的示例简化代码,但问题的本质在这里。提前谢谢。
答案 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();
}