2

我在包含的文件中有一个 PDO 对象,当我在主页中使用它时效果很好。当我将它传递给一个对象以在其中使用它时,它根本不起作用。

我已经直接尝试并参考(函数 xxxx(&dbd){ this->$db = &dbd }),根本不起作用,但是如果我传递另一种类型的值(作为字符串),它就完美了。如果我发送一个 $db = "olaola" 它可以工作,但如果它是一个 PDO 它会失败。我是php和英语的新手,所以请耐心等待:P

包含文件:

$username = "root";
$password = "*****";
$host = "localhost";
$dbname = "dbname";
$db = NULL;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try
{
    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
    die("Failed to connect to the database: " . $ex->getMessage());
}

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

主要:

$pagMenu = new pages($db);

在页面类中:

class pages {

    private $db;

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

3 回答 3

6

语法是:

    $this->db = $db;

不是$this->$db

于 2012-11-02T16:04:50.707 回答
5

你应该做

$this->db = $db;

代替

$this->$db = $db;

第二种形式是变量 variable,这意味着您将参数的值分配给名为变量内容的变量,如果该内容是 PDO 对象,它将返回错误。

于 2012-11-02T16:07:38.747 回答
0

静态语法

$self::$variableName

这种语法

$this->variableName
于 2019-01-28T03:05:04.410 回答