php - OO数据库类

标签 php oop class

我正在尝试通过在 PHP 中创建数据库类来更清晰地学习面向对象编程。

这就是我现在拥有的。当我尝试使用 $db->query();

调用它时,我收到有关 $mysqli 是 undefined variable 的错误

请解释如何定义变量$mysqli。

<?php

class phpDatabaseClass {

 public function __construct()
 {
  $mysqli = new mysqli(DBhost, DBusername, DBpassword, DBname);
 }

 public function query()
 {
  $sql = 'select * from users';
  $results = $mysqli->query($sql);

  if(($results->num_rows) > 0) 
  {
   echo 'We have: '.$results->num_rows;
  }
 }

}

?>

在另一个文件中,我正在实例化对象,然后调用这样的函数:

 require 'phpDatabaseClass.php';
 define('DBhost', 'localhost');
 define('DBusername', 'root');
 define('DBpassword', 'root');
 define('DBname', 'campbellCustomCoatings');


 $db = new phpDatabaseClass();
 $db->query();

最佳答案

您的 mysqli 实例需要成为您的类的成员,请看这里...

class phpDatabaseClass {
 private $mysqli;
 public function __construct()
 {
  $this->mysqli = new mysqli(DBhost, DBusername, DBpassword, DBname);
 }

 public function query()
 {
  $sql = 'select * from users';
  $results = $this->mysqli->query($sql);

  if(($results->num_rows) > 0) 
  {
   echo 'We have: '.$results->num_rows;
  }
 }

}

另外,因为你正在学习,所以尝试扩展 PDO 类以了解继承。

此外,稍微有点切线,但常量通常以 ALL_CAPS_WITH_UNDERSCORE_SEPARATORS 命名。

此外,全局定义中的数据库内容可能存在风险,因为每个 PHP 片段都可以访问它。我知道 WordPress 会这样做,但请相信我,它的代码质量值得怀疑。然而,它的受欢迎程度无疑是巨大的。

关于php - OO数据库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115729/

相关文章:

php - Laravel 5 PDOException 找不到驱动程序

c++ - 模板多态可以代替OO多态吗?

matlab - 如何在 MATLAB 中创建抽象类对象数组?

java - 我想要通用类的 "Class<T>"和 "Class variable"

java - 如何从Android中的其他类而不是Activity调用Activity中的方法?

php - WordPress PHP 页面上的动态 Accordion

php - 非阻塞命名管道

Javascript : Interface and DTO

php - php中$this::和$this->的区别

PHP PDO - PHP 解析错误 : syntax error, 意外 T_ENCAPSED_AND_WHITESPACE