Dev*_*Guy 5 php mysql database constants undefined
我有一个名为config.php的文件,其中我定义了4个常量:
<?php
define('HOST','localhost');
define('USER','root');
define('PASSWORD','');
define('DATABASE','some_database');
?>
Run Code Online (Sandbox Code Playgroud)
我想要做的是在另一个名为database.php的php文件中使用request_once函数调用此脚本,该文件将使用此文件中的常量进行连接
<?php
require_once('config.php');
$connect = mysql_connect(HOST,USER,PASSWORD);
$select_db = mysql_select_db(DATABASE);
?>
Run Code Online (Sandbox Code Playgroud)
我得到的是主机,用户,密码和数据库没有定义.这是为什么?这是我用于连接的示例简化代码,但问题的本质在这里.先感谢您.
PHP 默认情况下不显示未定义常量的通知。因此,如果您使用未定义的常量,PHP 会简单地将其视为字符串。例如,
<?php
//define('__TEST__', 'foo');
print __TEST__; //Will print __TEST__ and raise E_NOTICE if it's enabled
Run Code Online (Sandbox Code Playgroud)
如果您取消上面的注释,define()PHP 将foo改为打印并且不会发出通知。
就我个人而言,我建议您进行更深入的测试:
error_reporting(E_ALL)0)在 config.php 中声明
1) 在包含此文件之前检查文件是否存在并且可读
2) 在使用常量之前检查常量是否实际定义
最后,它希望是这样的:
文件:config.php
<?php
error_reporting(E_ALL);
define('HOST','localhost');
define('USER','root');
define('PASSWORD','');
define('DATABASE','some_database');
Run Code Online (Sandbox Code Playgroud)
文件: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);
}
Run Code Online (Sandbox Code Playgroud)