-1

クラスを使用してデータアクセスを作成したい。しかし問題発生。私のドキュメント ルートは 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): ストリームを開けませんでした: No such file or directory in D:\DevelopmentWebSite\public_html\index.php on line 14

致命的なエラー: require(): D:\DevelopmentWebSite\public_html で必要な 'D:/DevelopmentWebSite/public_html/../resources\dal\PDO.php' (include_path='.;C:\php\pear') を開くことができませんでした\index.php 14行目

申し訳ありませんが、私はPHPにまったく慣れていません。誰が何が悪いのか考えていますか?

4

1 に答える 1

4

ローカル変数 DBH を使用しています。これは、コンストラクターの最後で失われることを意味します。

メンバー変数を作成することができます: protected $DBH

コンストラクターで:$this->DBH = new PDO(...

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

于 2012-08-11T09:39:46.523 に答える