在PHP中使用MySQL类的简单范围问题

时间:2011-02-22 01:02:33

标签: php mysql

这应该是一个没脑子的,它已经很晚了,我无法看到我做错了什么:

MySQL类:

class MySQL
{
public $db;
private $result;

public function __construct ($host, $user, $password, $database)
{
  $this -> connectDB ($host, $user, $password, $database);
}

public function __destruct ()
{
  $this -> breakDB();
}

private function connectDB ($host, $user, $password, $database)
{
  $this -> db = mysql_connect ($host, $user, $password) or die (mysql_error());
  if (is_resource ($this -> db))
  {
    mysql_select_db ($database) or die (mysql_error());
    mysql_set_charset('utf8',$this -> db); 
  }
}

private function breakDB()
{
  if (is_resource ($this -> db))
  {
    mysql_close ($this -> db);
    }
}
}
使用MySQL的

类:

class Scraper {
private $urls_array = array();
private $mysql;

public function __construct ()
{
        $this -> mysql = new MySQL ('xxx', 'xxx', 'xxx', 'xxx');
}
private function getURLs($city=NULL,$provider=NULL) {

    /* Get all URLs to scrape */
    $result = $this -> mysql -> db = mysql_query("SELECT `xxx`,`xxx`,`xxx`, `xxx` FROM `URL` WHERE `xxx` = '1'");
   }
   }

我正在使用的线是:

$result = $this -> mysql -> db = mysql_query("SELECT `xxx`,`xxx`,`xxx`, `xxx` FROM `URL` WHERE `xxx` = '1'");

我不知道如何正确使用$ mysql,所以它将mysql_query发送到我在构造函数中打开的连接?感谢任何帮助!谢谢。

3 个答案:

答案 0 :(得分:3)

你只需稍微重新排列一线:

$result = mysql_query("SELECT `xxx`,`xxx`,`xxx`, `xxx` FROM `URL` WHERE `xxx` = '1'",
                      $this -> mysql -> db);

我建议您在MySQL课程中创建一个查询方法,然后将db设为私有。

最基本的:

class MySQL {
   private $db;

   // ... as before ...

   public function query($queryText) {
       return mysql_query($queryText, $this->db);
   }
}

当然,使用mysqli可能是一个更好的主意。

答案 1 :(得分:2)

通过在您创建的query课程中加入MySQL功能,您可以让自己更容易一些。基本的jist看起来像这样:

public function query($sqlQuery)
{
     return mysql_query($sqlQuery, $this->db);
}

你会像这样使用它:

$result = $this->mysql->query("SELECT `xxx`,`xxx`,`xxx`, `xxx` FROM `URL` WHERE `xxx` = '1'");

答案 2 :(得分:1)

你必须这样做:

$result = mysql_query("SELECT ...", $this->mysql->db);

$db属性仅保存您可以选择提供给mysql函数的MySQL资源。如果您在query课程中添加了MySQL方法,那么这似乎更有意义,因此这是透明的,您可以使用$this->mysql->query('SELECT ...')