2015-03-25 78 views
0

我有一個網站的一些網頁,現在添加其他網頁我已經安裝wordpress在一個子目錄中。wordpress包括第二個mysql連接

我爲wordpress創建了一個CHILD THEME。在我的孩子主題的header.php中,我包含了主頁的home.css和標題標記。一切都好!

因爲我的主網站已經有一個連接到mysql數據庫(不是wp的),我想在我的子主題的header.php中添加一個這個mysql連接。雖然在我的主要網站完全相同的代碼工作,在WordPress我得到這個錯誤

function example($value) { 
global $con; 
return mysqli_real_escape_string($con, trim($value)); 
} 

$con = mysqli_connect(HOST, USER, PASS, DB) or die('Error'); 

$test = example('my string'); 

所以我加入這個代碼,第一件事情對我的孩子主題的header.php

Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in /home/user/public_html/wordpress/wp-content/themes/afs/header.php on line 11 

PS:我認爲這個問題是在全球$ CON,因爲如果我通過$ CON作爲函數參數一切正常。

這是可能的添加第二個MySQL連接在我的WordPress的兒童主題編號全球$ con或者我應該改變我所有的PHP功能?我很想知道爲什麼會發生這種情況..

回答

1

是的,它可以在WordPress中使用幾個數據庫。我相信最簡單的方法是使用WordPress數據庫類的新實例,並讓它負責引用正確的連接。

$my_second_db = new wpdb($db_user, $db_pass, $db_name, $db_host); 

你可以把它一個全球性的課程,然後只用你的粘蟲數據庫WordPress的數據庫功能。

$my_second_db->query($my_second_db->prepare("SELECT * FROM table WHERE ID = %d", $id), ARRAY_A); 

或者你的情況:

$my_second_db->escape($value); 

但你的代碼也將工作一樣,你必須爲其分配數據庫資源之前宣佈$ CON作爲一個全球性的。但是,當你花了太多的汁來裝載它們時,你將無法使用所有整潔的WordPress功能,這看起來很浪費。無論哪種方式,這應該工作:

function example($value) { 
global $con; 
return mysqli_real_escape_string($con, trim($value)); 
} 

global $con; 
$con = mysqli_connect(HOST, USER, PASS, DB) or die('Error'); 

$test = example('my string'); 
+0

謝謝你,它是一個不好的做法,將$ con設置爲全球? – ipel 2015-03-25 14:33:19

+0

根本沒有,只是在使用WordPress框架時,我會親自選擇使用他們的數據庫類,因爲它帶有一堆漂亮的功能。 https://codex.wordpress.org/Class_Reference/wpdb – 2015-03-25 17:42:46