2014-09-04 39 views
0

我作爲在一個PHP文件連接MySQL和在另一個PHP文件

<?php 
/** 
* Database config variables 
*/ 
define("DB_HOST", "blabla"); 
define("DB_USER", "blabla"); 
define("DB_PASSWORD", "blabla"); 
define("DB_DATABASE", "blabla"); 

?> 

一個config.php文件,例如在使用它,我有一個connect.php文件如

<?php 

class DB_Connect { 

    // constructor 
    function __construct() { 

    } 

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

    // Connecting to database 
    public function connect() { 
     require_once 'config.php'; 
     // connecting to mysql 
     $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 
     // selecting database 
     mysql_select_db(DB_DATABASE); 

     // return database handler 
     return $con; 
    } 

    // Closing database connection 
    public function close() { 
     mysql_close(); 
    } 

} 
?> 

而且我作爲

 <?php 

    class DB_Functions { 

     private $db; 
    //put your code here 
    // constructor 
     function __construct() { 
      include_once 'connect.php'; 
     // connecting to database 
      $this->db = new DB_Connect(); 
      $this->db->connect(); 
     } 

    // destructor 
     function __destruct() { 

     } 

    /** 
    * Storing new user 
    * returns user details 
    */ 
    public function insertRecord($name, $email, $gcm_regid, $password) { 


     // insert user into database 
     $response = array(); 
     $query0 = "SELECT * FROM gcm_users WHERE name='$name'"; 
     $result0 = mysql_query($query0); 


     if(mysql_fetch_array($result0) == NULL){ 

    //insert... 
      // insert user into database 
    $query = "INSERT INTO `gcm_users`(`id`, `gcm_regid`, `name`, `email`) VALUES (NULL,'$gcm_regid','$name','$email');"; 

    $result= mysql_query($query); 
     // check for successful store 
     if ($result) { 
      // get user details 
     //  $result2 = mysql_query("SELECT * FROM gcm_users WHERE name = '$name'") or die(mysql_error()); 
      // return user details 
     //  if (mysql_num_rows($result2) > 0) { 
       $response["success"] = 1; 
     $response["message"] = "record added"; 
    // echo no users JSON 
     return $response; 

    }else{ 
     $response["success"] = 0; 
     $response["message"] = "No records added"; 
    // echo no users JSON 
     return $response; 
    } 



}else{ 
     $response["success"] = 0; 
     $response["message"] = "Record already exists"; 
    // echo no users JSON 
     return $response; 
    } 

} 
?> 

一個functions.php文件,例如我有一個簡單的函數,插入一條記錄,但它不幹活想多文件連接件S ystem有一個錯誤轉移連接,但我找不到原因。請幫助我謝謝。 當我從另一個調用文件 其中包括與調用此方法

include_once 'functions.php'; 
$db = new DB_Functions(); 
$res = $db->insertRecord($name, $email, $gcm_regid, $password); 
     echo json_encode($res); 

對不起,誤導性方法,但我使用過Android應用程序,程序這方面走的路總是進入其他部分,而不是如($結果)part.However當我連接,而無需使用另外的config.php和connect.php,只是寫在同一文件中的一切,

 <?php 

    class DB_Functions { 

     private $db; 
    //put your code here 
    // constructor 
     function __construct() { 
      include_once 'connect.php'; 
     // connecting to database 
      $this->db = new DB_Connect(); 
      $this->db->connect(); 
     } 

    // destructor 
     function __destruct() { 

     } 

    /** 
    * Storing new user 
    * returns user details 
    */ 
    public function insertRecord($name, $email, $gcm_regid, $password) { 
     $con = mysql_connect("blabla","blabla","blabla"); 
    mysql_select_db('blabla'); 


     // insert user into database 
     $response = array(); 
     $query0 = "SELECT * FROM gcm_users WHERE name='$name'"; 
    $result0= mysql_query($query0 , $con); 


     if(mysql_fetch_array($result0) == NULL){ 

    //insert... 
      // insert user into database 
    $query = "INSERT INTO `gcm_users`(`id`, `gcm_regid`, `name`, `email`) VALUES (NULL,'$gcm_regid','$name','$email');"; 

    $result= mysql_query($query , $con); 
     // check for successful store 
     if ($result) { 
      // get user details 
     //  $result2 = mysql_query("SELECT * FROM gcm_users WHERE name = '$name'") or die(mysql_error()); 
      // return user details 
     //  if (mysql_num_rows($result2) > 0) { 
    mysql_close($con); 

       $response["success"] = 1; 
     $response["message"] = "products found"; 
    // echo no users JSON 
     return $response; 

    }else{ 
    mysql_close($con); 

     $response["success"] = 0; 
     $response["message"] = "No products added"; 
    // echo no users JSON 
     return $response; 
    } 



}else{ 
    mysql_close($con); 

     $response["success"] = 0; 
     $response["message"] = "Product already exists"; 
    // echo no users JSON 
     return $response; 
    } 

} 
?> 

的$結果返回true和記錄是added.In事實沒有錯誤,即$ result變量不轉向的情況當我使用面向對象的連接模式時是真實的。

+0

你會得到哪個錯誤? – 2014-09-04 06:49:25

+0

如有錯誤,請始終發帖! – 2014-09-04 06:51:25

+0

沒有錯誤,插入查詢不起作用。有可能''this-> db-> connect();'方法不足以維護MySQL連接。感謝您的關心 – iRestMyCaseYourHonor 2014-09-04 07:16:29

回答

0

我不能評論...反正...

here,「這個擴展不贊成PHP 5.5.0的,並會在將來被移除。」考慮使用PDO:http://php.net/manual/en/book.pdo.php

此外,考慮檢查的是這樣的連接和數據庫的選擇:

$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD); 

if(!$con) 
{ 
    die(「Connection issue: 」 . mysql_error()); 
} 


$db_selection=mysql_select_db(DB_DATABASE); 
if(!$db_selection) 
{ 
    die(「Database selection issue: 」 . mysql_error()); 
} 

* mysql_select_db將使用與mysql_connect()函數打開的最後一個連接,如果你沒有在連接傳給你想使用作爲第二個參數。這個工作正常,所以我不認爲$ this-> db-> connect();是問題。我會仔細檢查是否正在使用正確的數據庫和表格信息。希望這有點幫助...新的在這裏。

您發佈的您的functions.php文件中缺少a:}?>。您是否打開了錯誤報告?可能想要檢查DB_Functions實例是否正在創建。

+0

感謝您的幫助,但但數據庫和表信息是正確的,因爲根據insertRecord方法的結構添加或不添加記錄,我稍微改變了一些代碼,它們與我的InsertRecord版本相同。第一個版本不起作用,但第二個工作。這是問題。沒有支架是由於複製粘貼。請你再檢查一下是怎麼回事? – iRestMyCaseYourHonor 2014-09-04 08:00:31

+0

嗯所以在第一種情況下,$結果不會返回true ...即使添加了記錄? 我複製了代碼(並在functions.php中添加了額外的'}',並創建了一個gcm_users表來確保。在這兩種情況下,代碼的工作方式應該如此。你是否在config.php中定義了用於連接第二個function.php的相同信息? 嘗試檢查mysql_error()返回的結果是否在$ result沒有返回true時提供任何提示。否則,我希望我能有更多的幫助,對不起! – 2014-09-04 17:09:06