Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP类中的作用域_Php_Database_Connection_Scope - Fatal编程技术网

PHP类中的作用域

PHP类中的作用域,php,database,connection,scope,Php,Database,Connection,Scope,我正在创建一个数据库连接对象,我不确定最好的方法是什么 如果我创建一个dbConnection类来建立连接(使用mysql\u connect),那么我可以从主脚本中的任何位置调用mysql\u查询吗 其他班级的学生呢?是否需要将对象或属性作为参数传递 基本上,我正在寻找最好的方法(在速度+内存方面)连接到数据库一次使用一个简单的类 我已经发布了数据库连接类的构造函数: function __construct($database="") { if (!empty($database)){ $t

我正在创建一个数据库连接对象,我不确定最好的方法是什么

如果我创建一个dbConnection类来建立连接(使用mysql\u connect),那么我可以从主脚本中的任何位置调用mysql\u查询吗

其他班级的学生呢?是否需要将对象或属性作为参数传递

基本上,我正在寻找最好的方法(在速度+内存方面)连接到数据库一次使用一个简单的类

我已经发布了数据库连接类的构造函数:

function __construct($database="") {
if (!empty($database)){ $this->db = $database; }
$this->dblink = mysql_connect($this->host,$this->username,$this->password);
if (!this->dblink) {
    //Fatal Error
}
mysql_select_db($this->db, $this->dblink);

}与其创建自己的数据库抽象类,不如尝试一下。作者在使它易于使用方面做了出色的工作。该类完成的查询返回的数据结构比mysql\u query返回的数据结构灵活得多,这将为您节省大量工作。

您几乎做到了。我的数据库类如下所示:

class DB {
  function __construct($host,$user,$pass,$db) {
    // error checking has been removed for brevity
    $this->mysql = mysql_connect($host,$user,$pass);
    mysql_select_db($this->mysql, $db);
  }
  function fetchRows($query) {
    // error checking removed again
    $result = mysql_query($this->mysql);
    $return = array();
    while($data = mysql_fetch_assoc($result))
      $return[] = $data;
    mysql_free_result($result);
    return $return;
  }
}
require 'DB.inc.php';
$GLOBALS['DB'] = new DB('localhost', 'root', '', 'my_database');
global $DB;
$query = 'SELECT UserID, UserName FROM users';
foreach($DB->fetchRows($query) as $user)
    echo "$user[UserID]: $user[UserName]\n";
在我的主include文件中,我有如下内容:

class DB {
  function __construct($host,$user,$pass,$db) {
    // error checking has been removed for brevity
    $this->mysql = mysql_connect($host,$user,$pass);
    mysql_select_db($this->mysql, $db);
  }
  function fetchRows($query) {
    // error checking removed again
    $result = mysql_query($this->mysql);
    $return = array();
    while($data = mysql_fetch_assoc($result))
      $return[] = $data;
    mysql_free_result($result);
    return $return;
  }
}
require 'DB.inc.php';
$GLOBALS['DB'] = new DB('localhost', 'root', '', 'my_database');
global $DB;
$query = 'SELECT UserID, UserName FROM users';
foreach($DB->fetchRows($query) as $user)
    echo "$user[UserID]: $user[UserName]\n";
然后在项目的任何部分,我都可以运行如下查询:

class DB {
  function __construct($host,$user,$pass,$db) {
    // error checking has been removed for brevity
    $this->mysql = mysql_connect($host,$user,$pass);
    mysql_select_db($this->mysql, $db);
  }
  function fetchRows($query) {
    // error checking removed again
    $result = mysql_query($this->mysql);
    $return = array();
    while($data = mysql_fetch_assoc($result))
      $return[] = $data;
    mysql_free_result($result);
    return $return;
  }
}
require 'DB.inc.php';
$GLOBALS['DB'] = new DB('localhost', 'root', '', 'my_database');
global $DB;
$query = 'SELECT UserID, UserName FROM users';
foreach($DB->fetchRows($query) as $user)
    echo "$user[UserID]: $user[UserName]\n";

注意:mysql\u pconnect()不推荐使用,原因请参见用户评论。

要执行查询,应将连接对象作为参数传递给查询函数。您需要访问要运行查询的任何位置的连接对象

require_once DBConnection;
require_once SomeClass;

$con = new DBConnection();
$query = "Select * FROM Users";
mysql_query($query, $con->link);

// Use the connection in another class that takes a connection object in the constructor
$someclass = new SomeClass($con);
$someclass->executeQueryThree();
但是,我更倾向于在DBConnection类中使用mysql_查询作为如下方法:

公共函数查询($query){ $result=mysql\u query($query,$this->link); 返回$result; }

然后执行以下操作:

$query = "Select * FROM Users";
$con = new DBConnection();
$result = $con->query($query);

// From within SomeClass
$someclass = new SomeClass();
$result = $con->query($someclass->getQuery3());

您不使用PDO或MySQLi库有什么原因吗?如果您使用的是_construct(),那么您必须至少在PHP的v5.x上。