php - 我在哪里可以关闭这个类层次结构中的 mysql 连接?

标签 php mysql class hierarchy

我在 PHP 中有 4 个类用于注册用户,问题是我不知道如何关闭 mysql 连接。

类调用:

single_connect->database->post->signup

当我在单例中实现 mysql_close() 时,它破坏了我的代码。我的假设是,只要创建了一个注册对象,它所扩展的类也会被“实例化”。但事实并非如此。

我必须注释掉 mysql_close 才能让它工作。请注意,我的单例使用数据库链接来确定它是否存在,然后像大多数单例一样使用指向自身的指针。

/*single_connect*/

class single_connect
  {
  private static $_db_pointer = NULL;
  private function __destruct() 
    {
    //mysql_close();
    }
  private function __construct()
    {
    self::$_db_pointer = mysql_connect(DB_HOST, DB_USER, DB_PASS);
    mysql_select_db(DB_DATABASE);
    }
  public static function get_connection()
    {
    if(self::$_db_pointer == NULL)
      {
      return new self();
      } 
    }
  }

/*database*/

abstract class database
  {
  protected function __construct()
    {
    single_connect::get_connection();
    }
  protected static function query($query)
    {
    $result = mysql_query($query) or die(mysql_error());
    return $result;
    }
  }

/*post*/

class post extends database
  {
  public $_protected_arr=array();
  protected function __construct()
    {
    parent::__construct();
    $this->protect();
    }
  protected function protect()
    {
    foreach($_POST as $key => $value)
      {
      $this->_protected_arr[$key] = mysql_real_escape_string($value);
      }
    }
  }

/*signup*/

class signup extends post 
  { 
 ...

最佳答案

当脚本执行完成时,连接会自动关闭。因此,如果在最后一次数据库操作和脚本结束之间没有大量时间,我就不会显式关闭连接。

关于php - 我在哪里可以关闭这个类层次结构中的 mysql 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803466/

相关文章:

PHP 错误显示橙色表和 'call stack'

MySQL 错误 : Operand Should Contain at least 1 column (Comma vs Point)

c++ - 在 C++ 中定义一个类

c++ - cout一个类的函数

php - 删除主行和所有子项 mysql 和 php

javascript - 一次搜索并显示多个单词。在 PHP 中

php - Laravel session 查询唯一用户

php - 如何将 2 个 mysql 语句合并为 1 个?

python - 每个子类都包含自己的列表吗?

mysql - 为 EC2 上的高流量调整 php-fpm、nginx、mysql