0

データベースに対してクエリを実行する XML API があります。この XML API 関数を使用してデータベースからデータを取得するサイトもあります。ユーザーが自分のサイトで選択した内容に応じてデータベースを変更したいと考えています。ユーザーが選択項目から地域コードを選択すると、xml API 呼び出し (php ファイル) を呼び出してデータベースを変更する JavaScript アクションが呼び出されます。DB は現在の通話に対してのみ変更されますが、現在のセッションに対して変更したいと考えています。私の XML API には、クラス Mysql を作成し、データベースへの接続を開始する構成ファイルがあります。その構成ファイルは、API のすべての php ファイルに対して require_once です。クラスは次のようになります。

class Mysql 
{ 
    private $host = DB_HOST; 
    private $username = DB_USER; 
    private $password = DB_PASS; 
    private $database = DB_NAME; 
    private $connection; 
    private $selection; 


    public function connect() 
    { 
       $connection = mysql_connect($this->host,$this->username,$this->password) or die('Cannot connect to db('.$this->database.'): '. mysql_error()); 
            $selection = mysql_select_db($this->database) or die('Cannot select db: '. mysql_error()); 
            return $connection;
    } 

    public function connect_close() 
    { 
       mysql_close();
    }

        public function change_DB($dbname){
            //$this->connect_close();
            $this->database = $dbname;
        }

        public function getDB(){
            return $this->database;
        }
}

データベースを変更するために、change_DB 関数で mysql_select_db を使用しようとしましたが、spicific 呼び出しのためだけに変更されました。次に、プライベート var データベースを変更し、接続を閉じて、新しいデータベースで再度開いてみましたが、何もしませんでした。誰かが私にアドバイスをくれますか?私は宿題をしました。

4

1 に答える 1

0

この種の動作の理由の 1 つは、呼び出しごとに $object が新しいオブジェクトとして作成されることです。おそらく、PHP MySQL は永続的な接続を作成するように構成されていません。php.ini と、さまざまなページでこのオブジェクトをどのように管理しているかを確認した後、ここに当てはまるかどうかしかわかりません。

PHP MySQL が mysql.allow_persistent = 1 で設定されていることを確認する必要があります。この設定の詳細については、次を参照してください。

http://php.net/manual/en/mysql.configuration.php#ini.mysql.allow-persistent

http://php.net/manual/en/features.persistent-connections.php

お役に立てれば。

于 2013-01-14T17:26:08.247 に答える