2016-05-10 11 views
0

Ich versuche, eine Verbindung mithilfe der Funktion in meiner anderen PHP-Datei zu erstellen. So kann ich in jeder PHP-Datei darauf zugreifen. Wie kann ich die Funktion innerhalb meiner class aus einer anderen PHP-Datei aufrufen. Was ist der richtige Weg, um eine Instanz meiner Funktion zu erstellen, indem ich sie oben in meine Datei oder in meine Klasse lege? Ich versuche mein System zu starten, aber die Verbindung wird nicht geladen.Verwenden von Funktion zum Erstellen einer Verbindung

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; 
} 
}       
?> 

andere Datei, wo ich bin gonna meine Funktion oder Methode aufrufen.

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

Sollte nicht '$ myDatabase' auf der Linie, wo Sie Ihre Aussage definieren nur' seinen $ myConnection'? – Dacaspex

+0

Übergeben Sie '$ myConnection' zum Beispiel als Argument an einen Konstruktor. –

+0

'error_reporting (0);' warum? –

Antwort

1

Es können mindestens zwei Möglichkeiten, sein $myConnection auf Ihre loginCRUD Klasse übergeben.

Erste ist $myConnection in einer Klasse selbst zu erstellen:

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); 

Zweite ist passieren $myConnection als Argument an Ihren Klassenkonstruktor:

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

Ich bevorzuge dein erstes Beispiel! So froh, dass du mir hilfst :) – Francisunoxx

0

Der Grund, Sie werden immer ein Fehler liegt an Ihrem variablen Bereich. Versuchen Sie in Ihrer Klasse loginCRUD auf eine Variable zuzugreifen, die myConnection aufgerufen wird, es findet es nicht, da der Bereich der Funktion nur diese Funktion ist. Es weiß nicht, dass Sie die globale deklarierte Variable bedeuten. Ein richtiger Weg, dies zu fixieren sollte sein:

... 
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()) 
    { 
... 

Zum Vergleich: Accessing variables and methods outside of class definitions

Verwandte Themen