2016-04-25 5 views
-1

これらのファイルを使用すると自分のデータベースに接続できません。ここで彼らはPHPコードです。設定ファイルを使用しているときにmysqlデータベースに接続できません

db_config.phpファイル:

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

db_connect.phpファイル:

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

?> 

add_team.phpファイル:

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

?> 

私はadd_team.phpファイルを実行するために、これらのファイルを使用して、私のプログラムクラッシュします(Javaで使用します)。それは完璧に動作

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

?> 

:私はadd_team.phpファイルを変更した場合でも、このようなDB_CONNECTクラスを使用しないように。私はチュートリアルに従っていましたが、動作しないバージョンは、その男がそれを設定する方法を示しています。私は間違って何をしていますか?私はphpに新しいので、あなたが陳述されている文を見たら私を許してください、私は後でそれらを変更します。私はそれらを使用しています。私が従っていたチュートリアルはかなり古く、非推奨の代替方法の使用方法はまだ分かりません。

また、DB_CONNECTクラスでこの設定ファイルの設定が好きです。なぜなら、データベーストランザクションを実行するphpファイルに自分のデータベースパスワードをハードコードする必要がないからです。これは動作するバージョンより少し安全だと思われます。だから私はより良いバージョンの作業を得ることができる場合、これは良い設定ですか?一度に複数の挿入、更新、削除などをしたいのであれば、データベーストランザクションを実行するPHPファイルの1つを呼び出すたびに再接続して切断する必要がありますか?

+0

あなたの 'DB_CONNECT'クラスで、' mysql_ * '関数で' mysqli'オブジェクトを使用しているのは普通ですか? – Aurel

+0

@Aurelオハイオ州私は持っていた元の方法にそれを変更するのを忘れました。私は別のものをテストしていた。しかし、まだそれは動作していませんでした。私はそれをより一貫性を保つために持っていた元の方法に戻します。 –

+0

'oops'と' procedural'フォーマットを混在させる理由は、クラスを作成する必要がないときにそのクラスを呼び出すことですか?なぜ??? – itzmukeshy7

答えて

0

db_connect.phpに次のようにしてみてください

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

?> 

そして、あなたのadd_team.php更新中

$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

ヘルプマンに感謝しますが、私はそれを理解しました:] –

+0

また、mysqliまたはPDOステートメントの使用を検討する必要があります。 mysqlはPHPの最新バージョンから廃止されました。 iniファイルを使用して詳細を保存することができます – Saurabh

+0

私はそれを行います。今のところ私は公に使用されるプログラムをリリースしていません。しかし私がそうするとき、私はコードをより安全に変えることは間違いありません。 –

0

それを考え出しました!修正するのに数時間かかったちょっとしたバグ。 DB_CONNECTクラスのデストラクタでは、私はthis->close()ではなく$this.close()を呼び出していました。それを完全に修正しました。

関連する問題