2016-04-25 3 views
-1

Ich kann keine Verbindung zu meiner Datenbank herstellen, wenn ich diese Dateien verwende. Hier sind sie mit dem PHP-Code.Probleme beim Herstellen einer Verbindung zur mysql-Datenbank bei Verwendung einer Konfigurationsdatei

Die db_config.php Datei:

<?php 
    define('DB_USER', "root"); 
    define('DB_PASSWORD', "mypassword"); 
    define('DB_DATABASE', "mydbname"); 
    define('DB_SERVER', "localhost"); 
?> 

Die db_connect.php Datei:

<?php 

    class DB_CONNECT 
    { 
     //constructor 
     function __construct() 
     { 
      $this->connect(); 
     } 

     //destructor 
     function __destruct() 
     { 
      $this.close(); 
     } 

     function connect() 
     { 
      // import database connection variables 
      require_once __DIR__ . '/db_config.php'; 

      $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error()); 
      $db = mysql_select_db(DB_DATABASE) or die(mysql_error()); 

      // returing connection cursor 
      return $con; 
     } 

     function close() 
     { 
      //closing db connection 
      mysql_close(); 
     } 
    } 

?> 

Die add_team.php Datei:

<?php 

$response = array(); 

if(isset($_POST['team_full_name']) && isset($_POST['team_short_name']) && isset($_POST['league'])) 
{ 
    $team_fn = $_POST['team_full_name']; 
    $team_sn = $_POST['team_short_name']; 
    $league = $_POST['league']; 

    require_once __DIR__ . '/db_connect.php'; 
    $db = new DB_CONNECT(); 

    $result = mysql_query("INSERT INTO teamData (team_full_name, team_short_name, league) VALUES ('$team_fn', '$team_sn', '$league')"); 

    if($result) 
    { 
     $response["success"] = 1; 
     $response["message"] = "Team Data successfully added."; 

     echo json_encode($response); 
    } 
    else 
    { 
     $response["success"] = 0; 
     $response["message"] = "Error occurred!"; 

     echo json_encode($response); 
    } 
    //for testing 
    //mysql_close($dbhandle); 
} 
else 
{ 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing."; 
    echo json_encode($response); 
} 

?> 

Wenn ich diese Dateien verwenden, die add_team.php Datei, mein Programm auszuführen stürzt ab (in Java). Aber wenn ich die add_team.php Datei ändern nicht verwenden, um die DB_CONNECT Klasse wie folgt:

<?php 

$response = array(); 

if(isset($_POST['team_full_name']) && isset($_POST['team_short_name']) && isset($_POST['league'])) 
{ 
    $team_fn = $_POST['team_full_name']; 
    $team_sn = $_POST['team_short_name']; 
    $league = $_POST['league']; 

    $dbhandle = mysql_connect("localhost", "root", "mypassword") or die ("unable to connect to MySQL"); 
    $db = mysql_select_db("mydbname", $dbhandle); 

    $result = mysql_query("INSERT INTO teamData (team_full_name, team_short_name, league) VALUES ('$team_fn', '$team_sn', '$league')"); 

    if($result) 
    { 
     $response["success"] = 1; 
     $response["message"] = "Team Data successfully added."; 

     echo json_encode($response); 
    } 
    else 
    { 
     $response["success"] = 0; 
     $response["message"] = "Error occurred!"; 

     echo json_encode($response); 
    } 

    mysql_close($dbhandle); 
} 
else 
{ 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing."; 
    echo json_encode($response); 
} 

?> 

es perfekt funktioniert. Ich folgte einem Tutorial und die Version, die nicht funktioniert, ist, wie der Typ gesagt hat, es einzurichten. Was mache ich falsch? Ich bin neu bei PHP, also entschuldige mich, wenn du Aussagen siehst, die veraltet sind, werde ich sie später ändern. Ich verwende sie, weil das Tutorial, dem ich folgte, ziemlich alt ist und ich nicht weiß, wie man die nicht veralteten Alternativen noch benutzt.

Auch ich mag diese Konfiguration der Konfigurationsdatei mit der DB_CONNECT Klasse, weil ich nicht mein Datenbankkennwort in den PHP-Dateien, die Datenbanktransaktionen durchführen, hart Code. Es scheint ein bisschen sicherer als die Version, die funktioniert. Also, wenn ich die bessere Version funktioniere, ist das ein gutes Setup? Was ist, wenn ich mehrere Einfügungen, Aktualisierungen, Löschungen usw. gleichzeitig vornehmen möchte? Muss ich mich jedes Mal, wenn ich eine meiner PHP-Dateien, die eine Datenbanktransaktion durchführen, aufrufen, erneut verbinden und trennen?

+0

Ist es normal, dass Sie in Ihrer 'DB_CONNECT' Klasse ein' mysqli' Objekt mit 'mysql_ *' Funktionen verwenden? – Aurel

+0

@Aurel Oh vergessen, es auf die ursprüngliche Weise zu ändern, die ich hatte. Ich habe verschiedene Dinge getestet. Aber es funktionierte immer noch nicht. Ich werde es wieder auf die ursprüngliche Weise ändern, die ich hatte, um es konsistenter zu halten. –

+0

Warum Sie "oops" und "prozedurale" Formate mischen, wenn Sie keine Klasse erstellen müssen, rufen Sie diese Klasse auf? Warum??? – itzmukeshy7

Antwort

0

Bitte versuchen Sie es in db_connect.php folgenden

<?php 

class DB_CONNECT 
{ 
    function connect() 
    { 
     // import database connection variables 
     require_once __DIR__ . '/db_config.php'; 

     $con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error()); 
     $db = mysql_select_db(DB_DATABASE) or die(mysql_error()); 

     // returing connection cursor 
     return $con; 
    } 

    function close() 
    { 
     //closing db connection 
     mysql_close(); 
    } 
} 

?> 

Und in Ihrem add_team.php Update

$db = new DB_CONNECT(); 
$dbCon = $db->connect(); 
$query = "INSERT INTO teamData (team_full_name, team_short_name, league) VALUES ('{$team_fn}', '{$team_sn}', '{$league}')"; 
$result = mysql_query($query,$dbCon); 
+0

Ich schätze den Hilfe-Mann, aber ich fand es heraus:] –

+0

Auch sollten Sie in Betracht ziehen, mysqli oder PDO-Anweisung zu verwenden. als mysql ist von den neuesten Versionen von PHP veraltet. Sie können ini-Datei verwenden, um die Details zu speichern – Saurabh

+0

Ich werde das tun. Momentan veröffentliche ich mein Programm nicht zur öffentlichen Nutzung. Aber wenn ich das tue, werde ich definitiv den Code ändern, um sicherer zu sein. –

0

figured it out! Dummer kleiner Käfer, der mich mehrere Stunden brauchte, um zu reparieren. In der Destruktor der DB_CONNECT Klasse rief ich $this.close() statt this->close(). Komplett repariert es.

Verwandte Themen