将PDO db对象实例传递给其他类函数

时间:2012-11-02 16:01:53

标签: php mysql database pdo

我在一个包含的文件中有一个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);

在main中:

$pagMenu = new pages($db);

在页面课程中:

class pages {

    private $db;

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

3 个答案:

答案 0 :(得分:6)

语法为:

    $this->db = $db;

不是$this->$db

答案 1 :(得分:5)

你应该做

$this->db = $db;

而不是

$this->$db = $db;

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

答案 2 :(得分:0)

静态语法

<?php

include "../conn.php";

$sql = "INSERT INTO contenido (id_contenido, tipo_contenido, id_seccion, orden_contenido, largo_contenido, corto_contenido, extra_contenido) VALUES (?,?,?,?,?,?)";

$stmt = $conn->prepare($sql);
if ($stmt))
{
    //echo "It worked";

    $stmt->execute(array($_POST["tipo"], $_GET['id'],$_POST["orden"],$_POST["largo"],$_POST["corto"],$_POST["extra"]));
    $last_id = $conn->lastInsertId();

    header("Location: editarContenidos.php?id=".$_GET['id']);
}

?>

此语法

$self::$variableName