php - クラス「Undefined variable conn」への接続ファイルを含める

原文 php mysql sql pdo

2つのphpファイルがあり、そのうちの1つはクラスです。データベースに接続する$conn変数を持つファイルを含めようとしています。問題は、このエラーが発生することです。

 Notice: Undefined variable: conn in /home/yuran/public_html/avec/DatabaseContent.php on line 20

 Fatal error: Call to a member function prepare() on a non-object in /home/yuran/public_html/avec/DatabaseContent.php on line 20


これがコードです:

connection.php

<?php
    require_once('constants.php');

    try{
    //Create a database connection
        $conn = new PDO("mysql:host=".DB_SERVER.";"."dbname=".DB_NAME,DB_USER, DB_PASS);
    } catch(PDOException $pe){
        die("Could not connect to the database ".DB_NAME.": ".$pe->getMessage());
    }

?>


DatabaseContent.php

<?php
include('inc/conn/connection.php');

class DatabaseContent{

public function fetchAllRows($table, $rowOrder, $direction){
        $this->sql .= "ORDER BY :roworder :direction";
        $q = $conn->prepare($this->sql);
        $q->execute(array(':table'=>$table, 'roworder'=>$rowOrder, ':direction'=>$direction));
        $q->setFetchMode(PDO::FETCH_ASSOC);

        return $q;
    }
答え
クラス外のファイルを含めることはできません。

関数内にファイルを含めることもできないため、$con変数をパラメーターとして渡すことができます。

だからあなたを変える

public function fetchAllRows($table, $rowOrder, $direction)




public function fetchAllRows($table, $rowOrder, $direction,$con)


また、関数を呼び出すときは、接続リンクを関数呼び出しのパラメーターとして渡すだけです。
関連記事

php - 選択した言語でレコードベースを注文する

php - codeigniterでdoctrineクエリビルダーを使用する方法

php - ネストされたjsonへのphp配列のマッピング

php - スラッシュの間にある文字列を置き換えます

php - Zend Framework 2の動的ルーティング

php - 3つのエンティティ(アイテム、それらのカテゴリ、および追加フィールド)間のデータベース関係を作成するにはどうすればよいですか?

php - imagecreatefromjpegがメモリエラーの原因です

php - Google Chromeの間違ったテキスト表示

php - mysqlデータベースの1つの列に複数の値を挿入する

php - ブートストラップでDBアダプターを再利用して、Zend FrameworkでカスタムハンドラーDBセッションを設定する