我一直在尝试使用OO PHP,目前有三个文件。我有一个class_lib.php,目前只有一个databaseServer类,一个index.php文件和一个definitions.php文件。我想将所有敏感数据库信息放入定义文件中。但是,当我这样做时,我在尝试连接数据库时遇到错误:“Unkown server DB_HOST”。我的定义文件是:
<?php
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_PASS","password");
define("DB_NAME","database");
?>
然后我在索引文件中使用它们,如下所示:
include('definitions.php');
include('class_lib.php');
$testing = new databaseServer();
$testing->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
我在databaseServer类中使用的函数是:
function connect($host,$user,$pw,$db) {
$this->con = mysql_connect($host,$user,$pw);
if (!$this->con) {
die('Could not connect: ' . mysql_error());
}
$this->selectDb($db);
}
function selectDb($database) {
$this->db = mysql_select_db($database,$this->con);
if (!$this->db) {
echo "Could not Select database: " . mysql_error();
}
}
为什么这不起作用的任何想法?我也尝试将定义文件放入class_lib文件中的include中,但它仍然不起作用。
答案 0 :(得分:5)
这应该可以正常工作,我从来没有看到它不起作用。
100%确定包含的顺序是正确的(需要先加载定义)
在“definitions.php”文件和索引文件中对常量值进行测试输出
100%确定您正在调用正确的文件
答案 1 :(得分:2)
请检查您的服务器是否支持short_open_tag,这个值会被评论。 我刚刚启用它,它开始工作。
答案 2 :(得分:1)
工作
if (stats.isEmpty()){
System.out.println("no home team name entered");
}
else {
try{
for(int i = 0; i < stats.size(); i++){
System.out.println(stats.get(i)[0] + " " + Integer.valueOf(stats.get(i)[2]) + " : " +
Integer.valueOf(stats.get(i)[3]) + " " + stats.get(i)[1]);
}
}
catch (Exception e) {
//do nothing with any invalid input
}
}
不工作
<?php
define('KLINGON_SEPARATOR', '');
?>
愚蠢...... IDEA说&#34;多余的结束标签&#34;
答案 3 :(得分:0)
称之为config.php
if(!$link)
{
die('Failed to connect to server: ' . mysql_error());
}
$db = mysql_select_db(DB_DATABASE);
if(!$db)
{
die("Unable to select database");
}
?>
然后包括(“config.php”);在您的网页上
答案 4 :(得分:0)
我今天有一个类似的问题,它似乎在文件末尾是无效的字符代码。我在堆栈PHP define is not registering constants上找到了它。他的解决方案(删除多余的空格)对我有用。
答案 5 :(得分:-1)
您只需要取出目标文件的define
函数并将其传输到源文件(在您的情况下&#34; translation.php&#34;)并准备好工作!
像这样,接收字符串参数的定义函数的错误不会发生,你将包含已经实现的CONSTANTS。
我遇到了这个麻烦,发现自己就是这个解决方案。
答案 6 :(得分:-1)
这里的关键是使用constant()函数从定义的常量中提取值:
echo constant("DB_USERNAME");