PHP - 为数据库访问创建类

时间:2012-08-11 08:39:15

标签: php mysql class pdo

我想使用class创建数据访问。但问题出现了。我的文档根目录是public_html,所以我的/ resources文件在文档根目录

之外

我在/resources/dal/task.php有一个数据访问层类

<?php
namespace resources\dal;

class task
{
public $result;
public function __construct()
{
    try {
        # MySQL with PDO_MYSQL
        $DBH = new PDO('mysql:host=localhost;dbname=test', 'root',     'abc123');
        $DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION,     PDO::NULL_EMPTY_STRING );
    }       
    catch(PDOException $e) {
        echo "I'm sorry. Please try again later.";  
        file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND);  
    }
}

public function __destruct()
{
    $DBH = null;
}

public function select()
{
    $STH = $DBH->prepare("SELECT * FROM task");
    $STH->execute();
    $result = $STH->fetch(PDO::FETCH_ASSOC);
    $this->result = $result;
}
}
?>

这是我的主页(在public_html内)index.php

<?php
    spl_autoload_extensions(".php");
    spl_autoload_register(function ($class) {
    require $_SERVER["DOCUMENT_ROOT"] . '/../' . $class . '.php';
    });

use resources\dal as DAL;

$taskClass = new DAL\task();
$result = $taskClass->select();
    var_dump($result);
?>

我收到此错误:

  

警告:require(D:/ DevelopmentWebSite / public_html /../ resources \ dal \ PDO.php):无法打开流:第14行的D:\ DevelopmentWebSite \ public_html \ index.php中没有此类文件或目录

     

致命错误:require():在D:\中打开所需的'D:/ DevelopmentWebSite / public_html /../ resources \ dal \ PDO.php'(include_path ='。; C:\ php \ pear')失败第14行的DevelopmentWebSite \ public_html \ index.php

对不起,我对PHP很新。任何人都知道什么是错的?

1 个答案:

答案 0 :(得分:4)

您正在使用本地变量DBH。这意味着它在构造函数结束时丢失了。

您可以创建成员变量: protected $DBH

在构造函数中:$this->DBH = new PDO(...

使用:$this->DBH->prepare(...