2016-02-01 47 views
0

我通常沉浸在Microsoft Stack中,但時不時涉足PHP。我用過PHP的一個長期問題,我從來沒有找到答案,那麼你如何將已經聲明的require("dbConnect.php")數據庫連接應用到你的mysql_query()?爲了說明,請參見下面我的代碼,例如:PHP MySQL從Require()獲取連接文件

 require("dbConnect.php"); 

     $db_host = 'localhost'; 
     $db_user = 'UserName'; 
     $db_pwd = 'Password'; 

     $database = 'DbName'; 
     $table = 'tblQuote'; 

     if (!mysql_connect($db_host, $db_user, $db_pwd)) 
      die("Can't connect to database"); 

     if (!mysql_select_db($database)) 
      die("Can't select database"); 

     // sending query 
     $result = mysql_query("SELECT QuoteID, FirstName, LastName, PhoneNumber, Email, QuoteDate FROM tblQuote ORDER BY QuoteDate DESC"); 
     if (!$result) { 
      die("Query to show fields from table failed"); 
     } 

     $fields_num = mysql_num_fields($result); 

所以在看這個,你可以看到標準要求在頂部......它已經擁有我的連接信息()聲明。但是我找到的每一個MySQL Query例子都會創建它自己的連接...我將它用於演示目的......但是我一直無法弄清楚如何使用我現有的連接,從而繞過重寫在編寫查詢時,一遍又一遍地重複完全相同的連接信息。我知道你的PHP開發人員這個問題就像101,但我一直無法找到這個看似基本的問題的答案......坦率地說,我可能會問這個問題是錯誤的,所以任何幫助將不勝感激!

+1

首先你看到的例子是錯誤的。你的連接細節應該在一個單獨的文件(在你的例子中是dbConnect.php),並且包含文件的文件不應該有連接細節(這是標準的做法)。另請注意'mysql_'函數自PHP 5.5.0起棄用,並在PHP 7.x中刪除。相反,[MySQLi](http://www.php.net/manual/en/book.mysqli.php)或[PDO_MySQL](http://www.php.net/manual/en/ref.pdo-應該使用mysql.php)擴展名。 – bansi

+0

@bansi Right ...這就是我所想象的......但我從來沒有見過一個實際使用Require()連接的mysql_query()示例,因爲我所見過的所有示例都創建了自己的連接。 –

+2

請不要使用'mysql_ *'函數,它們現在被折舊。請使用'mysqli_ *'函數:) – Matt

回答

1

從PHP文件:http://php.net/manual/en/function.mysql-query.php

mixed mysql_query (string $query [, resource $link_identifier = NULL ]) 

link_identifier MySQL連接。如果未指定鏈接標識符,則假定由mysql_connect()打開的最後一個鏈接。如果沒有找到這樣的鏈接,它會嘗試創建一個,就好像調用mysql_connect()時沒有參數一樣。

因此,由於您已經在您的dbConnect.php中創建了一個,因此您將使用剛創建的那個(它不會爲每個查詢創建一個新的)。在你上面貼的代碼

dbConnect.php

return mysql_connect(....); 

然後:要明確地傳遞到你的mysql_query函數調用,您可以返回從您的mysql_connect調用返回,像這樣MySQL的資源

$mysql_conn = require('dbConnect.php'); 
... 
$result = mysql_query('...', $mysql_conn); 

然後,您將明確地擁有連接並將其傳遞給您的查詢 - 無論您的代碼庫變得多大,都不會誤認。當你需要這個文件時,你可以訪問連接變量,但在上面的例子中,你如何獲得連接在語義上更清晰。


另外,請注意,這個功能在PHP> = 5.5被棄用,所以你要使用具有未來支持的PDO或MySQLi的。

希望這會有所幫助!

+0

甜! Bansi在我的問題的評論中給了幾個鏈接,顯示了一個連接類,你可以在需要的時候實例化。是什麼方法「最佳實踐」,即mysqli()與類的連接,或者如上所示? –

+1

PDO將爲您提供最好的功能,但這需要付出代價:它們非常棘手,有時候很難用於簡單任務 - 它們的學習曲線更高。您可以從MySQLi中獲得相同的功能,但是您需要編寫像@ bansi提供的連接類。 「使用PHP和MySQL」看起來像是最好的,最詳細的例子。總的來說,我會說試試PDO和MySQLi。寫一些概念驗證,看看你更喜歡哪一個。 – stevemiketa