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