2012-03-13 22 views
2

私は主に自己ティーチにテストクラスに取り組んでいます。以下は、クラスである:OOP PHPファーストクラスMySQLデータベース接続

class Connection 
{ 
    public $con; 
    public $dbSelected; 
    public $activeConnection; 
    public $dataBaseName; 
    function __contruct($dbUserName, $dbPassword, $server = "localhost") 
    { 
     $this->con = mysql_connect($server,$dbUserName,$dbPassword); 
     if(!$this->$con) 
     { 
      $this->activeConnection = false; 
     } 
     else 
     { 
      $this->activeConnection = true; 
     } 
    } 

    public function dbConnect($dbName, $identifyer = null) 
    { 
     if ($identifyer === null) 
     { 
      $identifyer = $this->con; 
     } 
     $this->dbSelected = mysql_select_db($dbName, $identifyer); 
     $this->dataBaseName = $dbName; 
     if($this->dbSelected != true) 
     { 
      $this->connectionErrorReport(__LINE__); 
     } 
    } 


    public function cleanData(array $submission) 
    { 
     unset($submission["throughTheCleaners"]); 
     foreach($submission as $key => $value) 
     { 

      if(is_array($value)) 
      { 
       $data[$key] = $this->cleanData($value); 
      } 
      else 
      { 
       $data[$key] = mysql_real_escape_string($value); 
      } 
     } 
     $data["throughTheCleaners"] = true; 
     return $data; 
    } 


    public function query($query, $dataSent) 
    { 
     if($dataSent["throughTheCleaners"] != true) 
     { 
      die("you must clean the data".__LINE__); 
     } 

     if($this->activeConnection == true && $this->dbSelected == true) 
     { 
      $result = mysql_query($query) or queryErrorReport($query, __LINE__); 
      $i = 0; 
      while($row = mysql_fetch_array($result)) 
      { 
       foreach($row as $key => $value) 
       { 
        $data[$i][$key] = $value; 
        $i++; 
       } 
      } 
      return $data;   
     } 
     else 
     { 
      $this->$connectionErrorReport(__LINE__); 
     } 
    } 

    public function connectionErrorReport($line = __LINE__) 
    { 
     $error = "There has been a connection error on line ".$line."</br>"; 
     if($this->activeConnection == false) 
     { 
      $error.= "Active Connection Error <br/>"; 
     } 
     if($this->dbSelected == false) 
     { 
      $error.= "Data Base Selection Error <br/>"; 
     } 
     die($error.mysql_error()); 
    } 

    public function queryErrorReport($query, $line = __LINE__) 
    { 
     die("There was a query error on ".$line."<br />$query<br/>".mysql_error()); 
    } 

    function __destruct() { 
     mysql_close($this->con); 
    } 
} 

私はできない、それはコンストラクタの呼び出し時に$con変数に保存されているMySQLデータベースリソース教材をピックアップし、他の機能でそれを使用することはありませんなぜ私のフィギュアうちの生活のために。

は、最終的に別のクラス内の文字列が、私は現在、接続クラスの秋を取得しています唯一のエラーの暗号化機能があるでしょう。

ので、エラーを投げページは次のようになります。

include 'connection.php'; 
include 'loginClass.php'; 
$longinConnection = new Connection('***USERNAMEHERE***','***PASSWORD***'); 
$longinConnection->dbConnect("***DBTOCONNECTTO***"); 
echo Authoriz::encryptPassword("***USERPASSWORD***",$longinConnection); 

このページはencryptPassword機能をテストしますが、私もConnectionクラスは、動作させることはできません。それがスローエラーは以下の通りです:

警告:mysql_select_db()パラメータ2は、リソース、空行31 アクティブな接続エラー データの接続エラーが発生しましたライン27 の[PATH]で与えられることを期待しますベースの選択エラー

警告:にmysql_close()は、パラメータ1が103

$con変数が何らかの理由でいずれかのために設定されていないように私には思えるリソース、空行の[PATH]で与えられることを期待します洞察力私が間違っているのものにいただければ幸いです。

+0

を初期化していないので、あなたは__constructをスペルミス。プロシージャのmysql_ * APIは10年以上前です。あなたはそれで新しいコードを書くべきではありません。恥ずかしいが、私はそれを逃した信じていないことができ、私はしばらくの間、この見つめてきたあなたに感謝どのように –

答えて

6

それはあなたがクラスを初期化する際に発火ない、とあなたは本当に[PDO](http://php.net/pdo)になっているはずです$this->con

+0

。これが私の最初のクラスであり、フィードバックがalwayas良いですが、あなたが見る他 –

+0

何をいただければ幸いです。 –

+0

私が気づいている他のエラーは '$ result = mysql_query($ query)またはqueryErrorReport($ query、__LINE __);'は '$ this-> queryErrorReport()'でなければなりません。それ以外は、それはうまく見えます、そして、それが実行されるなら、あなたは良いクラスを持っています。 :) –

関連する問題