缺少Database :: __ construct()的参数1

时间:2014-04-19 00:57:48

标签: php database

我试图扩展一个简单的数据库类。

<?php

class Database {

public $db;

public function __construct($db)
{
    $this->db = $db;
}

public function insert($table, $row, $value)
{
    $query = $this->db->prepare('INSERT INTO ? (?) VALUES (?)');
    $query->bindValue(1, $table);
    $query->bindValue(2, $row);
    $query->bindValue(3, $value);
    $query->execute();
}

}

?>

这是我扩展上一课的主要课程:

<?php

class AdminAccount extends Database {

public function setValues($table, $row, $value)
{
    $this->insert($table, $row, $value);
}
}

?>

这就是$ db变量......

$hostname = 'localhost';
$database = 'mydb';
$username = 'root';
$password = 'root';
$db = new PDO("mysql:host=" . $hostname . ";dbname=" . $database, $username, $password);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

然后我包括,实例化等..

<?php


require_once('includes/settings.php');
require_once('includes/connect.php');
require_once('lib/class.database.php');
require_once('lib/class.adminaccount.php');

$database     = new Database($db);
$adminaccount = new AdminAccount();

$adminaccount->setValues('tasklist', 'creator', 'Zet');

?>

出于某种原因,我收到了这个错误:

  

警告:缺少参数1,用于调用Database :: __ construct()   /Applications/MAMP/htdocs/admin/extend.php在第14行并在中定义   第7行/Applications/MAMP/htdocs/Admin/lib/class.database.php

  

注意:未定义的变量:db in   第9行/Applications/MAMP/htdocs/Admin/lib/class.database.php

这是为什么?当我连接到没有扩展的数据库时,一切正常。

2 个答案:

答案 0 :(得分:1)

我知道现在发生了什么。

您正在AdminAccount中扩展数据库,其中包含数据库构造函数。因此,在实例化AdminAccount时需要包含$ db,或者需要在AdminAccount中编写新的__construct()。

仅仅从查看代码开始,我就没有看到您扩展数据库的重点。您应该只将$ database传递给AdminAccount或在AdminAccount中实例化数据库,但如果您确实需要扩展数据库,那么解决方案将是:

$adminaccount = new AdminAccount($db);

答案 1 :(得分:0)

最后一段代码中的

$db未定义。它还没有设定好。 Database类的构造函数需要一个值。