WordPress选择了错误的数据库

时间:2012-10-02 作者:jocken

我有两个数据库。当我包括数据库连接时(with a include(\'filename.php\');) wordpress的行为真的很奇怪。

我无法登录,wordpress用户名和密码正确,但它尝试连接到其他数据库(打开调试时可以看到)。

WordPress database error: [Table \'api.apiwp_options\' doesn\'t exist]
SELECT option_value FROM apiwp_options WHERE option_name = \'widget_pages\' LIMIT 1
WordPress database error: [Table \'api.apiwp_options\' doesn\'t exist]
SELECT option_value FROM apiwp_options WHERE option_name = \'widget_calendar\' LIMIT 1
WordPress database error: [Table \'api.apiwp_options\' doesn\'t exist]
SELECT option_value FROM apiwp_options WHERE option_name = \'widget_links\' LIMIT 1
WordPress database error: [Table \'api.apiwp_options\' doesn\'t exist]
SELECT option_value FROM apiwp_options WHERE option_name = \'widget_tag_cloud\' LIMIT 1
WordPress database error: [Table \'api.apiwp_options\' doesn\'t exist]
SELECT option_value FROM apiwp_options WHERE option_name = \'widget_nav_menu\' LIMIT 1
就像他们无法分离连接一样。有什么可以帮我朝正确的方向发展的吗?

内容也停止工作。

Edit: Clearifying

我的数据库连接:

function ir_mysql() {
    global $dbm;

    if(empty($dbm)){
        $dbm = new Mysql(DBHOST, DBUSER, DBPASS, DBNAME);
    }
    return $dbm;
}
mysql。班php

class Mysql {

    // Variabler 
    // -----------------------------
    private $db;
    private $user;
    private $password;
    private $host;
    private $linkid;
    private $result;

function __construct($host, $user, $password, $db) {
        try {
            $this->db = $db;
            $this->user = $user;
            $this->password = $password;
            $this->host = $host;

            $this->connect();
            $this->select();
            mysql_set_charset(\'utf8\', $this->linkid);
        } catch (exception $e) {
            die($e->getMessage());
        }
    }


    function Connect() {
        try {
            $this->linkid = mysql_connect($this->host, $this->user, $this->password);
            if (!$this->linkid) {
                throw new Exception(mysql_error());
            }
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }


    function Select() {
        try {
            if (!mysql_select_db($this->db, $this->linkid)) {
                throw new Exception("Cannot access the selected database");
            }
        } catch (Exception $e) {
            die($e->getMessage());
        }
    }


    function Query($sql) {
        try {
            $this->result = @mysql_query($sql, $this->linkid);

            if (!$this->result) {

                throw new Exception("Mysql query error: \\n <br />" . mysql_error() . "<br />" . mysql_errno());
            }
        } catch (Exception $e) {
            if (ir_admin()) {
                die($e->getMessage());
            }
        }

        return $this->result;
    }

function Close() {
        mysql_close($this->linkid);
}

}
因此,如果我在查询新的内容,我会这样做:ir_mysql()->query("SELECT....");

我的方法和wordpress方法不太好用。

1 个回复
SO网友:jocken

以防有人感兴趣。我成功了。

我制作了一个插件,并在主php文件中编写了这个插件。

<?php

function ir_load(){
    include_once(ABSPATH . \'load.php\');
}

function db_fix_login(){
    global $wpdb;
    $wpdb->select(DB_NAME);
}

add_action("wp_head","db_fix_login", 0);

ir_load();
db_fix_login();

?>
Their_load() 包含到我的数据库的数据库连接。我把它作为一个函数,以防我需要更改或在其他地方包含它。

需要转到db\\U fix\\U登录wp_head() (因为我使用get_header() 在我的子页面上保留wordpress功能)。

一切都正常,只是如果我只是跑步的话,我就会一直注销ir_load().

所以在尝试了一切之后:为什么不跑呢db_fix_login() 就在那之后?它成功了。没有错误或任何东西!

结束