wordpress 包含第二个 mysql 连接

wordpress include a second mysql connection

我有一个包含一些页面的网站,现在要添加其他页面我已经在子目录中安装了 wordpress。

我为 wordpress 创建了一个 CHILD 主题。在我的 child 主题的 header.php 中,我包含了我的主网站的 home.css 和 header 标记。一切顺利!

因为我的 主网站 已经连接到 mysql 数据库(不是 wp 数据库),我想添加一个 mysql在我的 child 主题的 header.php 中也有连接。

所以我在我的 child 主题的 header.php 中添加了这段代码作为第一件事:

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' );

虽然完全相同的代码在我的主网站上运行,但在 wordpress 中我收到此错误:

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:我认为问题出在 global $con,因为如果我将 $con 作为函数参数传递 一切正常。

可以在我的 wordpress child 主题 unsing global $con 中添加第二个 mysql 连接,或者我应该更改所有 php 职能?我很想知道为什么会这样..

是的,可以在 WordPress 中使用多个数据库。我认为最简单的方法是使用 WordPress 数据库的新实例 class 并让它负责引用正确的连接。

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

您当然可以将其设为全局,然后只需在您的 separata 数据库上使用 WordPress db 函数。

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

或者您的情况:

$my_second_db->escape( $value );

但是您的代码也可以工作,只是您必须在将 $con 分配给 db 资源之前将其声明为全局变量。然而,您将无法使用所有整洁的 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' );