2015-03-25 37 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