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

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)

我得到的是主机,用户,密码和数据库没有定义.这是为什么?这是我用于连接的示例简化代码,但问题的本质在这里.先感谢您.

Yan*_*ang 1

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)