web-dev-qa-db-fra.com

Wordpress choisit une mauvaise base de données

J'ai 2 bases de données. Quand j'inclus la connexion à la base de données (with a include('filename.php');), wordpress agit vraiment de manière étrange.

Je ne parviens pas à me connecter, le nom d'utilisateur et le mot de passe wordpress sont corrects, mais le système essaie de se connecter à l'autre base de données (ce que je peux voir lorsque j'active le débogage).

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

C'est comme s'ils ne pouvaient pas séparer les connexions. Tout ce qui peut m'aider dans la bonne direction?

Le contenu cesse également de fonctionner.

Edit: Clearifying

Ma connexion à la base de données:

function ir_mysql() {
    global $dbm;

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

mysql.class.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);
}

}

Donc, si j'interroge quelque chose de nouveau, j'aime bien ceci: ir_mysql()->query("SELECT....");

Ma méthode et ma méthode wordpress ne fonctionnent pas bien.

1
jocken

Au cas où quelqu'un serait intéressé. Je l'ai fait fonctionner.

J'ai créé un plugin et dans le fichier php principal, j'ai écrit ceci.

<?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();

?>

La ir_load() contient la connexion de la base de données à ma base de données. J'en ai fait une fonction au cas où je devrais la modifier ou l'inclure ailleurs.

db_fix_login devait aller à wp_head() (puisque j'utilise get_header() sur ma sous-page pour conserver la fonctionnalité wordpress).

Tout fonctionnait sauf que je me déconnectais tout le temps si je ne faisais que ir_load().

Donc, après avoir tout essayé: pourquoi ne pas lancer db_fix_login() juste après? Ça a marché. Aucune erreur ou quoi que ce soit!

1
jocken