2016-07-14 3 views
-1

Ich möchte eine Funktion machen, die zuerst die Datenbankverbindung aufruft. Nach Abschluss verwende ich die Verbindungsvariable, um meine Abfrage auszuführen, und schließe sie dann mit einer anderen Funktion.Wie kann ich die Datenbankverbindung mit zwei verschiedenen Funktionen in PHP ein- und ausschalten?

Wie kann ich dies durch zwei verschiedene Funktionen feststellen? Soll ich globale Variablen erstellen?

Verbindung aufbauen

function setcon(){ 
$conn= new mysqli($server,$username,$pass,$db); 
if ($conn->connect_error) { die($conn->connect_error);}} 

Zerstören Verbindung

function endcon(){ 
    $conn->close();} 

Ich werde die Verbindungsvariable ($ conn) in meiner Abfragen verwenden müssen, so sollte ich es als verwenden Globale Variable?

+0

nicht mit '()' in 'setcon()' und 'endcon()' ist Tippfehler? – C2486

+0

Danke, dass Sie @Rishi darauf hingewiesen haben, ich tippe dies auf einem Telefon, es ist schwer, Fehler auf diese Weise zu bemerken. –

+0

Sie können die Klassenvariable verwenden, wenn Sie verwenden. wie '$ this-> conn' zu setzen und zu zerstören – C2486

Antwort

0

Eine globale Variable wird nicht als eine gute Methode angesehen.

Es hängt von Ihrem Projektumfang und Ihrer Architektur ab, aber ich würde vorschlagen, die Datenbankverbindung als Rückgabewert der Verbindungsfunktion zu haben (setcon in Ihrem Fall). Für jede Funktion, die die Datenbank verwendet, muss die Verbindungsvariable als Argument übergeben werden.

Für komplexere Projekte könnten Sie es objektorientiert machen und ein Datenbankverbindungsobjekt erstellen, das auch alle üblichen Prüfungen und Fehlerbehandlungen durchführt. Dies wird empfohlen, wenn Sie irgendwann zu einer anderen Datenbank wechseln möchten.

-2

Try this:

function connect($server, $username, $pass, $db) 
{ 
    closeConnect(); 

    $dbName = $db; 
    $dc = mysqli_connect($server, $username, $pass); 
    if (! $dc) { 
     echo "Connection to $dbName failed!"; 
    } 
    mysqli_select_db($dbName, $dc); 
} 

function closeConnect() 
{ 
    global $dc; 
    if ($dc) 
     @mysqli_close($dc); 
    $dc = null; 
} 

Hoffe, dass es Ihnen hilft!