2015-05-10 49 views
0

我有兩個幾乎完全相同的類,它們獨立工作,但兩者都在同一頁上。PHP類以某種方式衝突

它似乎給出了一個奇怪的輸出錯誤,結合了兩個類。

我在這裏犯了一個錯誤嗎?

$db = new query("localhost","xxxxxx","xxxxxx","xxxxxx"); 

class query extends hush { 
    public function __construct($host,$user,$pass,$dbname) { 
     mysql_connect($host,$user,$pass) 
      or die(mysql_error()); 
     mysql_select_db($dbname) 
      or die(mysql_error()); 
    } 
    public function qry($sql) { 
     // return mysql_query($sql); 
      $query = mysql_query($sql) or die(mysql_error()); 
      return $query; 
    } 

} 



$dbx = new queryx("localhost","xxxxxx","xxxxxx","xxxxxx"); 

class queryx extends hush { 
    public function __construct($host2,$user2,$pass2,$dbname2) { 
     mysql_connect($host2,$user2,$pass2) 
      or die(mysql_error()); 
     mysql_select_db($dbname2) 
      or die(mysql_error()); 
    } 
    public function qry2($sql2) { 
     // return mysql_query($sql); 
      $query2 = mysql_query($sql2) or die(mysql_error()); 
      echo $query2; 
    } 

} 
+1

您正在使用沒有鏈接標識符的mysql_ *函數。這意味着你正在覆蓋你之前的連接。首先,停止使用mysql_ *函數,它們被棄用,第二個使用對象與pdo或mysqli或鏈接標識符,你不會有這個問題。 – Devon

+0

我不遵循,請你解釋一下嗎? – Derple

+1

您可能感興趣的:[爲什麼不應該在php中使用mysql_ *函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) 。有替代品列出,去爲他們。 – gvlasov

回答

1

這是一個使用mysqli的程序示例。但是,由於您正在使用類,我認爲您應該嘗試使用對象。

class query extends hush { 

    protected $db; 

    public function __construct($host,$user,$pass,$dbname) { 
     $this->db = mysqli_connect($host,$user,$pass,$dbname) 
    } 
    public function qry($sql) { 
     return mysqli_query($this->db, $sql) or die(mysqli_error()); 
    } 

} 

class queryx extends hush { 

    protected $db; 

    public function __construct($host,$user,$pass,$dbname) { 
     $this->db = mysqli_connect($host,$user,$pass,$dbname) 
    } 
    public function qry($sql) { 
     return mysqli_query($this->db, $sql) or die(mysqli_error()); 
    } 

} 

注意我已經使用鏈接標識符的類屬性($this->db)。這將防止來自多個連接的任何衝突。