提问者:小点点

无法访问其他php文件中的变量[重复]


我试图访问config.php内部的变量。 但它总是让我犯错误。 错误包括:

Notice: Undefined variable: dbuser in /var/www/html/addproduct.php on line 98

Notice: Undefined variable: dbpass in /var/www/html/addproduct.php on line 98

Notice: Undefined variable: dbname in /var/www/html/addproduct.php on line 98

Notice: Undefined variable: dbhost in /var/www/html/addproduct.php on line 98

Warning: mysqli::__construct(): (HY000/1045): Access denied for user ''@'localhost' (using password: NO) in /var/www/html/dbinit.php on line 35

对我来说,这似乎是一个奇怪的问题,因为如果require找不到必要的文件,它会在例外情况下死亡。 以下是PHP代码的一部分:

AddProduct.php

<?php require 'config.php'; require 'dbinit.php';

class userInput
{
    public function addToDatabase()
    {
        $DBHandle = InitConn($dbuser,$dbpass,$dbname,$dbhost);
        if($DBHandle)
        {
            //More stuff here...
        }
        else
        {
            echo "Error connecting to database" . $DBHandle->error;
        }
    }
}
?>

config.php

<?php
$dbuser = ""; // Your database username
$dbpass = ""; // Your database password
$dbhost = ""; // Your database hostname
$dbtable = ""; // Your database's table name
$dbname = "" // Your database's name
?>

最奇怪的是,它正在通过if($dbhandle)检查。 它不显示echo,一个else语句。 当然,在没有成功连接到数据库的情况下传递if语句后,一切都将严重失败。 那么,是否意味着PHP已经成功连接到数据库,而错误却在说另一回事呢?

编辑#1

DBinit函数initconn:

function InitConn($username,$password,$dbname,$host)
    {
        $conn = new mysqli($host,$username,$password);
        if($conn)
        {
            return $conn;
        }
        else
        {
            return 0;
        }
    }

共1个答案

匿名用户

在方法中将它们设置为全局

<?php require 'config.php'; require 'dbinit.php';

class userInput
{
    public function addToDatabase()
    {
global $dbuser,$dbpass,$dbname,$dbhost;
        $DBHandle = InitConn($dbuser,$dbpass,$dbname,$dbhost);
        if($DBHandle)
        {
            //More stuff here...
        }
        else
        {
            echo "Error connecting to database" . $DBHandle->error;
        }
    }
}
?>

编辑:

初始化类返回object(true),因此在任何情况下它都将覆盖该条件。 要使用外部mysqli函数检查错误,可以使用mysqli_connect_errno()函数

function InitConn($username,$password,$dbname,$host)
    {
        $conn = mysqli_connect($host,$username ,$password,$dbname);
        if(mysqli_connect_errno())
        {
            return $conn;
        }
        else
        {
            return 0;
        }
    }


另一种方式:


        $conn =new mysqli($host,$username ,$password,$dbname);
        if($conn->connect_error)
        {