WordPress 在其他 PHP 文件中使用 wp_config.php 变量连接到数据库

WordPress Using wp_config.php variables in other PHP files to Connect to DB

我有一个连接到 wordpress 数据库的简单 php 文件,任何需要的东西都可以正常工作。但我想使用来自 wordpress wp_config.php 文件的值将我的 php 文件连接到数据库。我试过了,但没用

   <?php

require_once('wp-config.php');
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD , DB_NAME);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

这是我的默认 PHP 文件。该文件位于我在另一个模板中用于自定义搜索的 WordPress 项目内的一个目录中。

// Create connection
$conn = new mysqli($servername, $username, $password , $database);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

注意:重要数据我改了! 您对此有解决方案吗?

相同的代码对我来说工作正常。

Check the wp-config.php path and try to echo the constants and check you have included the correct file before passing to mysqli

 echo DB_HOST;
 echo DB_USER;
 echo DB_PASSWORD;
 echo DB_NAME;

或者您可以使用 wp-load.php include('/path/wp-load.php');

include_once ('/path/wp-load.php');
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD , DB_NAME);
// Check connection
if ($conn->connect_error)
   die("Connection failed: " . $conn->connect_error);

您确实应该使用 PDO 进行连接,但除此之外,也许尝试使用 constant("variable") 而不是尝试直接使用变量:

<?php
require_once('wp-config.php');
$conn = new mysqli(constant("DB_HOST"), constant("DB_USER"), constant("DB_PASSWORD"), constant("DB_NAME"));
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

使用 wp-config 中定义的用户集:

mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

因为你的脚本在 Wordpress 环境之外,试试这个:

require_once(path/to/wp-config.php');
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

由于您想在其他外部应用程序或模板中连接 WP DB 以从 WP DB 获取数据,您可以直接在文件中包含 wordpress 文件。 使用 wp-blog-header.php 会将完整的 wordpress 加载到您当前的模板中,然后您就可以使用它了。

include_once $_SERVER['DOCUMENT_ROOT'].'/YOUR_WP_DIR/wp-blog-header.php';
global $wpdb; // wordpress database object
print_r($wpdb);

wp-blog-header.php的内容:

/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */

if ( !isset($wp_did_header) ) {

    $wp_did_header = true;

    // Load the WordPress library.
    require_once( dirname(__FILE__) . '/wp-load.php' );

    // Set up the WordPress query.
    wp();

    // Load the theme template.
    require_once( ABSPATH . WPINC . '/template-loader.php' );

}