2017-08-10 16 views
0

手続き後php先週からOOPの基本を勉強してデータベースに接続しようとしました。しかし、それは私に予期しないエラーを示していますmysqliとのPHP接続エラー

unexpected '$conn' (T_VARIABLE), expecting function (T_FUNCTION)

PHPコード:

class Database 
{ 
    public $conn; 

    private $host = "localhost"; 
    private $user = "root"; 
    private $pass = ""; 
    private $db = "inventory"; 

    // Create connection 
    $conn = new mysqli($host, $user, $pass, $db); 

    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    echo "Connected successfully"; 
} 

答えて

0

あなたは機能にあなたの接続コードを保存する必要があります。上からpublic $conn;を削除することを忘れないでください。

public function createConnection() 
    { 
     // Create connection 
     $conn = new mysqli($this->host, $this->user, $this->pass, $this->db); 

     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     //echo "Connected successfully"; 
     return $conn; 
    } 

次に、クラスのオブジェクトを作成できます。

$db = new Database(); // Your main object 
    $conn = $db->createConnection(); // The connection object 

私はあなたのクラスのプライベート変数にアクセスするために$ this->変数を使用しています。

接続オブジェクトを使用できるようになりました。例: $conn->query("SELECT * FROM MyTable");

+0

Howells、私の問題を解決しました。グローバルなインスタンス変数として使用するmysqliインスタンスとして$ this-> connを使用し、private/protectedの可視性をcreateConnection()メソッドで使用できますか? –

+0

自分の投稿を編集しました。接続を作成した場合は、その接続オブジェクトが返されます。これをクエリに使用できます。 –

1

これを試してください:あなたは、コンストラクタが必要

<?php 

class Database { 
    public $conn; 

    private $host = "localhost"; 
    private $user = "root"; 
    private $pass = ""; 
    private $db = "inventory"; 

    public function __construct() 
    { 
     // Create connection 
     $this->conn = new mysqli($this->host, $this->user, $this->pass, $this->db); 

     // Check connection 
     if ($this->conn->connect_error) { 
      die("Connection failed: " . $this->conn->connect_error); 
     } 
     echo "Connected successfully"; 
    } 

    public function getCon() { 
     return $this->conn; 
    } 

} 

?> 

。ちょうどあなたのクラスを使用するために :あなたは$ CONNでACCESのgetter必要

$oDatabase = new Database(); 

を。

0

クラスには何の機能もありません。たとえば、データベースに接続するにはconnect()が必要です。

class Database { 
     // public $conn; 

     private $host = "localhost"; 
     private $user = "root"; 
     private $pass = ""; 
     private $db = "inventory"; 

     // Create connection 
     function connect() { 
     $conn = new mysqli($host, $user, $pass,$db); 
      // Check connection 
      if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
      } 
      echo "Connected successfully"; 
     } 
    } 
関連する問題