0

我正在尝试从外部数据库中获取结果以在 wordpress 中使用,外部数据库用于 phpbb。我有一个我知道可以正常工作的功能,因为echo $themeta[0]; 返回我想要的。但是由于某种原因,当我尝试执行 var_dump($forum_results) 时,DB select 语句不起作用给我NULL 。有没有人知道我可以做些什么来解决这个问题?

if ( ! function_exists( 'forum_database' ) ) :
/**
 * Forum database
*/
function forum_database() {

    $dbhost = 'localhost';
    $dbname = 'databasename';
    $dbuser = 'user2013';
    $dbpasswd = 'pass2013';
    $forum_table_b = 'phpbb_attachments';
    $forum_table_a = 'phpbb_topics';

    $forum_db = new wpdb($dbname, $dbuser, $dbpasswd, $dbhost);

    $key = 'forum_id';
    $themeta = get_post_custom_values($key, $post->ID);

    if( ! empty( $themeta ) ) {
        echo $themeta[0];

        $forum_results = $forum_db->get_results("SELECT topic_title FROM phpbb_topics WHERE forum_id = $themeta[0]");

        var_dump($forum_results);

        /*foreach ( $forum_results as $forum_result )
        {

            echo $forum_result->topic_title;
        }*/
    }
}
endif;
4

1 回答 1

0

正如您可以清楚地看到 wpdb 类的构造函数第一个参数是dbuser然后是密码然后是db 名称和最后一个是主机

function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) {
        register_shutdown_function( array( $this, '__destruct' ) );

        if ( WP_DEBUG )
            $this->show_errors();

        $this->init_charset();

        $this->dbuser = $dbuser;
        $this->dbpassword = $dbpassword;
        $this->dbname = $dbname;
        $this->dbhost = $dbhost;

        $this->db_connect();
    }

在您的代码中,您以错误的顺序传递了参数

$forum_db = new wpdb($dbname, $dbuser, $dbpasswd, $dbhost);

应该是

$forum_db = new wpdb($dbuser, $dbpasswd, $dbname , $dbhost);

并查看您可以使用的错误$forum_db->show_errors();$forum_db->print_error();

WPDB

于 2013-08-06T10:55:30.723 回答