我试图访问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;
}
}
在方法中将它们设置为全局
<?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)
{