2016-05-10 7 views
0

他のPHPファイルの関数を使用して接続を作成しようとしています。だから私はすべてのPHPファイルにアクセスすることができます。 classの中の関数を別のPHPファイルから呼び出すにはどうすればいいですか?私の関数のインスタンスを作成する適切な方法は、ファイルの上またはクラスの中に入れますか?私は自分のシステムを実行しようとしますが、接続はロードされません。関数を使用して接続を作成する

connection.php

<?php 

DEFINE ('host', 'localhost'); 
DEFINE ('username', 'root'); 
DEFINE ('password', ''); 
DEFINE ('database', 'librarysystem'); 

function getConnection() 
{ 
$myDB = mysqli_connect(host,username,password,database); 

if (!$myDB) 
{ 
    trigger_error ('Could not connect to MySQL: ' . mysqli_connect_error()); 
} 
else 
{ 
    return $myDB; 
} 
}       
?> 

私は私の関数やメソッドを呼び出すつもりだもう一つのファイル。

loginCRUD.php

<?php 
error_reporting(0); 

require_once ('../connection/connection.php'); 

$myConnection = getConnection(); 

class loginCRUD 
{ 
public function readLogin($dbusername,$dbpassword) 
{ 
    $statement = $myConnection->prepare("SELECT * FROM loginmodule WHERE loginUsername = ? AND loginPassword = ? LIMIT 1"); 
    $statement->bind_param("ss", $dbusername, $dbpassword); 
    if($statement->execute()) 
    { 
     $result = $statement->get_result(); 
     if($result->num_rows) 
     { 
      $row = $result->fetch_assoc(); 
      return $row; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    else 
    { 
     return false; 
    } 
} 
} 
(new loginCRUD)->readLogin($dbusername,$dbpassword); 
?> 
+1

あなたの文を定義するラインでない '$ myDatabase'はちょうど' $ myConnection'べきか? – Dacaspex

+0

コンストラクタへの引数として '$ myConnection'を渡します。 –

+0

'error_reporting(0);'なぜですか? –

答えて

1

あなたloginCRUDクラスに$myConnectionを渡すの少なくとも2つの方法が存在する場合があります。

まずクラス自体に$myConnectionを作成することです:

class loginCRUD 
{ 
    protected $dbCon; 

    public function __construct() 
    { 
     $this->dbCon = getConnection(); 
    } 

    public function readLogin($dbusername,$dbpassword) 
    { 
     $statement = $this->dbCon->prepare("YOUR SQL") 
     // other codes 
    } 
} 

(new loginCRUD)->readLogin($dbusername,$dbpassword); 

セカンドがあなたのクラスのコンストラクタの引数として$myConnectionを渡すことです:

class loginCRUD 
{ 
    protected $dbCon;  

    public function __construct($myCon) 
    { 
     $this->dbCon = $myCon; 
    } 

    public function readLogin($dbusername,$dbpassword) 
    { 
     $statement = $this->dbCon->prepare("YOUR SQL") 
     // other codes 

    } 
} 

$myConnection = getConnection(); 
(new loginCRUD($myConnection))->readLogin($dbusername,$dbpassword); 
+0

あなたの最初の例が好きです!とてもうれしいです:) – Francisunoxx

0

あなたが取得している理由可変スコープに起因するエラーです。 loginCRUDクラスでは、myConnectionという変数にアクセスしようとすると、関数のスコープがその関数だけであるため、変数を見つけることができません。 グローバルという変数が宣言されていることを意味するかどうかはわかりません。これを固定する正しい方法は次のようになります。
参考

... 
public function readLogin($dbusername,$dbpassword) 
{ 
    global $myConnection; 
    $statement = $myConnection->prepare("SELECT * FROM loginmodule WHERE loginUsername = ? AND loginPassword = ? LIMIT 1"); 
    $statement->bind_param("ss", $dbusername, $dbpassword); 
    if($statement->execute()) 
    { 
... 

Accessing variables and methods outside of class definitions

関連する問題