我试图在PHP中使用OOP创建一个mysql查询。在类" database_disconnection"下面的代码中不会抛出任何错误或通知,但是最后一个类" database_query"给我一个通知,$ database_handle是未定义的。我不知道导致这种情况的原因是因为我创建了database_query类作为database_connection的派生类,其中包含$ database_handle变量作为private。任何帮助将不胜感激!
实例化对象:
include("includes/database_classes.php");
new database_connection;
new database_query('SELECT * FROM users');
和班级:
<?php
/*----------------------------------------------------------------------------------------------------*/
class database_connection
{
private $username = 'root';
private $password = '';
private $hostname = 'localhost';
private $database = 'assistant';
private $database_handle;
function connect()
{
try
{
$database_handle = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
}
catch (PDOException $e)
{
print "Error!: " . $e ->getMessage() . "<br/>";
die();
}
}
}
/*----------------------------------------------------------------------------------------------------*/
class database_disconnection extends database_connection
{
function disconnect()
{
$database_handle = null;
}
}
/*----------------------------------------------------------------------------------------------------*/
class database_query extends database_connection
{
private $mysql_statement;
function __construct( $mysql_statement )
{
$this->mysql_statement = $mysql_statement;
foreach($database_handle->query("$mysql_statement") as $row) {
print_r($row);
}
}
}
/*----------------------------------------------------------------------------------------------------*/
?>
答案 0 :(得分:0)
在database_query
构造函数中,您在初始化之前尝试使用$database_handle
。如果您注意到,则只在父类(connect
)的database_connection
函数中初始化。
在尝试引用它之前调用connect
,或者在父构造函数中初始化它,然后调用它(parent::__construct();
)。