从ajax更改数据库以进行会话

时间:2013-01-14 10:12:09

标签: php javascript xml ajax

我有一个XML API,可以对数据库进行查询。我还有一个使用此XML API函数从我的数据库中获取数据的站点。我想根据用户在我的网站上选择的内容更改数据库。当用户从选择项中选择区域代码时,我调用调用xml api调用(php文件)的javascript操作来更改我的数据库。数据库仅针对当前调用进行更改,但我想为当前会话更改它。在我的XML API中,我有一个配置文件,它创建一个类Mysql,启动与数据库的连接。该配置文件是require_once到API的每个php文件。这个班是这样的:

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数据库,关闭连接并使用新数据库重新打开它,但什么都没有。 有人可以给我一个建议吗? 我做完了我的作业。

1 个答案:

答案 0 :(得分:0)

这种行为的原因之一可能是您的$对象在每次调用时都被创建为新对象。也许您的PHP MySQL未配置为创建持久连接。我只能在查看你的php.ini以及如何在各个页面管理这个对象之后判断是否存在这种情况。

您需要确保使用mysql.allow_persistent = 1设置PHP MySQL。您可以在此处阅读有关此设置的更多信息:

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

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

希望这有帮助。