通过php类建立数据库连接

通过php类建立数据库连接,php,Php,我目前正在学习和使用php类。我创建了一个基本类,希望能够连接mysql数据库并从两个表中获取结果。我使用PDO风格。在一个名为db_con.php的单独文件中 我有与数据库连接的凭据。我很难成功地建立和获取这些值。我无法使用SelectList类中的db文件中的$db\u con建立连接 我在这一行中特别遇到了一个错误: $sql = $this->db_con->prepare("SELECT * FROM curriculum_selection_list"); 错误状态为:

我目前正在学习和使用php类。我创建了一个基本类,希望能够连接mysql数据库并从两个表中获取结果。我使用PDO风格。在一个名为
db_con.php的单独文件中

我有与数据库连接的凭据。我很难成功地建立和获取这些值。我无法使用
SelectList
类中的db文件中的
$db\u con
建立连接

我在这一行中特别遇到了一个错误:

$sql = $this->db_con->prepare("SELECT * FROM curriculum_selection_list");
错误状态为:

致命错误:对/data/24/2/26/14/2678177/user/2940861/htdocs/controlpanel/select.class.php中的非对象调用成员函数prepare()

我怎样才能解决这个问题

select.class.php

include "db_con.php";

class SelectList
{
    private $db_con;

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

        public function ShowCurriculum()
        {
            $sql = $this->db_con->prepare("SELECT * FROM curriculum_selection_list");
            $sql->execute();
            $data = $sql->fetchAll();
            $curriculum = '<option value="0">choose...</option>';
            foreach ($data as $row){
                 $curriculum .= '<option value="' . $row['curriculum_id'] . ':' . $row['curriculum_name'] . '">' . $row['curriculum_name'] . '</option>';
            }
            return $curriculum;

        }

        public function ShowCourse()
        {
            $sql = $this->db_con->prepare("SELECT * FROM course_selection_list");
            $sql->execute();
            $data = $sql->fetchAll();
            $course = '<option value="0">choose...</option>';
            foreach ($data as $row){
                 $course .= '<option value="' . $row['course_id'] . ':' . $row['course_name'] . '">' . $row['course_name'] . '</option>';
            }
            return $course;
        }
}

$opt = new SelectList();
$dsn = '';
$user = '';
$password = '';

try {
    $db_con = new PDO($dsn, $user, $password);
    $db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
} 

您需要全局声明才能访问在函数外部分配的变量:

public function __construct()
{
    global $db_con;
    $this->db_con = $db_con;
}

但是,最好在创建对象时将连接作为参数传入,或者在
db_con.php
中定义一个函数并从构造函数调用它。

如前所述,您在下面的行中遇到了错误:
$sql=$this->db\u con->prepare(“从课程选择列表中选择*)
在上面的代码中,它无法创建与db.php的连接
请尝试
类选择列表
{
全球$db\u con;
..
..
..…
}