2016-11-09 58 views
0
DbConnect.php 

<?php 

/** 
* Handling database connection 

*/ 
include_once ('Config.php'); 

class DbConnect { 

    private $conn; 

    function __construct() { 

    } 

    /** 
    * Establishing database connection 
    * @return database connection handler 
    */ 
    function connect() { 

     // Connecting to mysql database 
     $this->conn = new mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 

     // Check for database connection error 
     if (mysqli_connect_errno()) { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
      exit; 
     } 


     // returing connection resource 
     return $this->conn; 
    } 

} 
class DbHandler { 

private $conn; 

function __construct() { 

    // opening db connection 
    $db = new DbConnect(); 
    $this->conn = $db->connect(); 
}} 

?> 

config.php 

<?php 
/** 
* Database configuration 
*/ 
define('DB_USERNAME', 'medma'); 
define('DB_PASSWORD', 'medma'); 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'medma_sameer'); 


/** 
* MSG91 configuration 
*/ 
define('MSG91_AUTH_KEY', "130558AmTMgKzL582187bb"); 
// sender id should 6 character long 
define('MSG91_SENDER_ID', 'MEDMA1'); 

define('USER_CREATED_SUCCESSFULLY', 0); 
define('USER_CREATE_FAILED', 1); 
define('USER_ALREADY_EXISTED', 2); 
?> 

請告訴我,可能是什麼問題,但我已經Not able to hit api to verify otp (Used Volley) 之前發佈,但是當我開始測試在那裏我安裝我被困在我的本地文件夾中每個PHP文件與極第一步是數據庫連接我上面寫的代碼並不顯示除空白我不能使用PHP連接到我的本地

+0

可否請你嘗試加入127.0.0.1而不是本地主機進入配置?還有什麼是錯誤信息?添加調試到您的PHP代碼http://stackoverflow.com/questions/845021/how-to-get-useful-error-messages-in-php所以你可以看到在瀏覽器中的錯誤信息 – hmrc87

+1

添加'error_reporting(E_ALL) ; ini_set('display_errors',1);'在頂部,然後看輸出是什麼 – Peon

回答

2

東西這裏有2個問題,可能導致頁面是空白:

第一個是你不實際上在腳本中輸出任何東西,至少不會在你發佈的代碼中輸出。

更大的問題是,這可能是錯誤的,因爲你似乎不是一個方法/類中:

$db = new DbConnect(); 
$this->conn = $db->connect(); 

$this是在方法的範圍定義,因此使用它就像你正在做的會導致一個致命的錯誤:

Fatal error: Using $this when not in object context in ...

作爲一個側面說明:如果你想顯示一個變量的內容,你應該使用var_dump(),而不是echo因爲最後只給出了數字和字符串任何meaningfull輸出;不適用於數據庫連接。所有的

+0

@ hrmc87寫入時,某些連接需要端口號(例如mamp),所以訪問URL必須是localhost:8888 /本地主機的數據庫服務器) – Benoti

+0

@Benoti可能是,處理OP的錯誤已經有了,將顯示,當代碼被使用。 – jeroen

+0

@Benoti我們不需要提及默認的端口和jeroen我會這樣做,如果有什麼不對的話就回來。 – SameerKhan1406

1

首先你壞調用連接這裏

$db = new DbConnect(); 
$this->conn = $db->connect(); 

在此範圍內,您不能訪問屬性conn(一類外)這樣 可以使用$db->conn做到這一點。然而,在這種情況下,你不能藏漢訪問它,因爲它是一個private

如果你想做到這一點使用你的類,你可以嘗試

$db = new DbConnect(); 
$conn = $db->connect(); 

$conn下u有一個數據庫連接。

@edit: 也許嘗試使用此

<?php 
include_once ('Config.php'); 

/** 
* Handling database connection 
*/ 
class DbConnect { 

    private static $_instance; //The single instance 
    private $_conn; 

    public static function getInstance() { 
     if(!self::$_instance) { // If no instance then make one 
      self::$_instance = new self(); 
     } 
     return self::$_instance; 
    } 

    private function __construct() { 
     // Connecting to mysql database 
     $this->_conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 

     // Check for database connection error 
     if (mysqli_connect_errno()) { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
      exit; 
     } 
    } 
    // Get connection 
    function getConnection() { 
     return $this->_conn; 
    } 

} 

要對數據庫的連接,你可以這樣做

$db = DbConnect::getInstance(); 
$conn = $db->getConnection(); 
$query= "SELECT foo FROM ....."; 
$result = $conn->query($query); 
+0

我已經更新了這個問題,請看看這是我正在做的事情,但是對於同一個變量名而言,$ this是在我刪除它時立即產生問題,但我不知道它不是以這種方式工作。我做$ this-> conn因爲變量名稱是相同的。所以引用當前類變量 – SameerKhan1406

+0

我現在不明白你的問題。我可以看到你已經更新了你的問題。你已經增加了一個新班級。但爲什麼有趣?什麼目的?如果你想通過'$ db = new DbConnect'調用它來連接一個變量,所以你必須重建你的'DbConnect類'。不過,我想你仍然有問題連接到服務器。你在'DbHandler類'的'conn'變量中有你的連接。但是你不能在這門課之外訪問它,因爲它是'私人'的。請更具體一些,以便我可以幫到你 – mamosek

+0

我這樣做是因爲我想實現這個人看到的同樣的東西http://www.androidhive.info/2015/08/android-adding-sms-verification-like -whatsapp-part-1 /這就是我正在做的事情,但是在這裏我取了單個文件,並且不需要或包括DbConnect,我在單個文件中做了簡單的連接到數據庫,即在兩個不同的類中,其次是$ conn變量是不同的從DbConnect類和其他從DbHandler類引用當前我使用「這個」關鍵字 – SameerKhan1406

相關問題