这应该是一个没脑子的,它已经很晚了,我无法看到我做错了什么:
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发送到我在构造函数中打开的连接?感谢任何帮助!谢谢。
答案 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 ...')
。