2016-06-13 9 views
0

Ich bin ziemlich neu in MySQLi und ich bin nicht wirklich sicher, wie man damit umgehen soll. Also Ratschläge sind willkommen, auch wenn alles gut zu funktionieren scheint.SQLi Neuling verbinden und schließen

ich eine Klasse in einer Verbindungsdatei gemacht:

<?php 
class Connection{ 
var $hostname; 
var $hostnameStr; 
var $dbName; 
var $user; 
var $pswd; 
var $connectObj; 
function __construct(){ 
    $this->hostname = "127.0.0.1"; 
    $this->hostnameStr = "localhost"; 
    $this->user = "userName"; 
    $this->pswd = "mypassword"; 
} 
function connect2db($db){ 
    $this->dbName = $db; 
    $this->connectObj = new mysqli($this->hostnameStr,$this->user,$this->pswd); 
    $this->connectObj->set_charset('utf8'); 
    return $this->connectObj; 
    } 
} 
?> 

So weit so gut, aber es ist wahrscheinlich kein guter Ansatz. In einer anderen PHP-Datei i tun:

<?php 
      require_once("../../Connections/connection.php"); 
      $connect = new Connection(); 
      $connection = $connect->connect2db("myDbName"); 
      $result_test = $connection->query("SELECT * FROM test ORDER BY uid ASC"); 
      while ($row = $result_test->fetch_assoc()){ 
       echo "<p>" . $row['firstname'] . " " . $row['lastname'] . "</p>"; 
      } 
<?> 

Ist es der beste Weg, um eine Datenbank zu verbinden, wenn Sie eine Menge von DB haben? Wenn ich versuche, die Verbindung zu schließen, sieht alles auch gut aus.

Ich fing an, dies vor zwei Tagen zu lernen, so kann dies unklar oder völlig unsinnig sein. Alles scheint gut zu funktionieren, aber ich bin mir sicher, dass es verschiedene Möglichkeiten gibt, den Code effizienter zu machen.

Irgendwelche Vorschläge?

Ist es eine andere Möglichkeit, die Verbindung zu schließen, wenn die Ergebnisse angezeigt werden? Bin ich auf der hellen Seite des Codes oder das ist nur ein Fehler, so zu arbeiten?

Eine echte Neuling Frage, aber ich hoffe, dass jemand in der Lage sein wird, mir die Grundlagen zu erklären?!

Soll ich stattdessen eine PDO Anfrage machen wie ich das an einem Beispiel sehe ???

$pdo = new PDO([params])... 

Ein wenig verwirrt hier!

PS: Ich habe nicht "WampServer" laufen und ich bin auf IIS7 mit phpmyadmnin, PHP 5.3 (dll) und PHP 7.0.1 als Fast cgi Windows 10.

+0

Google über 'singleton php Datenbankverbindung' –

+0

Seitliche Anmerkung: Das' var' Schlüsselwort ist Teil der PHP/4 OOP Syntax. Sogar PHP/5.3 wird nicht unterstützt. Das Lernen mit veralteten Lernprogrammen ist ein häufiger Anfängerfehler. –

+0

Ich schrieb ein anderes Thema, das ich erzählte über .... Die Antworten waren "Brauche ich wirklich ein Singleton in diesem Fall? Allerdings werde ich Google es;) Vielen Dank für Ihre schnelle Antwort !!! Mit freundlichen Grüßen Nicolas – tatactic

Antwort

1

Für Starter, machen Sie Ihre Code wie folgt:

connection.php:

<?php 
$hostname = "127.0.0.1"; 
$user = "userName"; 
$pswd = "mypassword"; 
$database = "myDbName"; 
$charset = "utf8"; 

$connection = new mysqli($hostname,$user,$pswd,$database); 
$connection->set_charset($charset); 

und in einer anderen Datei

<?php 
require_once("../../Connections/connection.php"); 
$result_test = $connection->query("SELECT * FROM test ORDER BY uid ASC"); 
while ($row = $result_test->fetch_assoc()){ 
    echo "<p>" . $row['firstname'] . " " . $row['lastname'] . "</p>"; 
} 

und es wird Ihnen erlauben, denselben Code auf verschiedenen Seiten zu verwenden, indem Sie ihre Anmeldeinformationen nur in der connection.php-Datei ändern.

Aber wenn Sie für die gute Beratung offen sind, und eine Menge Probleme vermeiden wollen, gehen Sie für PDO statt mysqli. Hier ist ein PDO tutorial Ich schrieb, die Ihnen helfen wird, es richtig zu verwenden.

+1

Das war die Art und Weise, wie ich es zuerst gemacht habe, du hast recht, meine Klasse ist total nutzlos. Ich werde lesen, versuchen, testen, dann werde ich wieder bei dir sein. – tatactic

+0

Gut, zögern Sie nicht zu fragen. –