【问题标题】:Including connection file to a class "Undefined variable conn"包括到类“未定义变量 conn”的连接文件
【发布时间】:2015-04-23 09:28:05
【问题描述】:

我有两个 php 文件,其中一个是一个类。我正在尝试包含具有连接到数据库的$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

代码如下:

连接.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());
    }

?>

数据库内容.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;
    }

【问题讨论】:

  • 只是传递连接变量作为参数?!
  • 您的问题是$conn 不为您尝试使用它的类所知。将其作为参数传递给函数并在那里使用。
  • 哦,有道理,这意味着我不必将 connection.php 文件包含到类中。
  • @Rizier123 非常感谢
  • @RyanJ 感谢您的帮助

标签: php mysql sql pdo


【解决方案1】:

将文件包含在类之外是行不通的。

您可以将$con 变量作为参数传递,因为您也不能将文件包含在函数中。

所以改变你的

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

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

当你调用函数时,只需在函数调用中将连接链接作为参数传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-20
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多