2012-02-24 58 views
0

我有一种连接,在php 5.2中正常工作,但现在不更新到5.3版本,它会生成错误:“数据库未选中”。这是我的脚本:数据库未选择php 5.3

的config.php:

$host = 'localhost' 
$user = 'root' 
$password = '' 
$db = 'mydb' 

Conf.class.php:

class Conf{ 

    private $_userdb;  
    private $_passdb;  
    private $_hostdb;  
    private $_db;  
    static $_instance; 

    private function __construct(){ 
       require 'config.php'; 
      $this->_userdb=$user;  
      $this->_passdb=$password;  
      $this->_hostdb=$host;  
      $this->_db=$db; 
    } 

    private function __clone(){ } 

    public static function getInstance(){ 
      if (!(self::$_instance instanceof self)){   
       self::$_instance=new self(); 
      }  
      return self::$_instance; 
    } 

    public function getUserDB(){ 
      $var=$this->_userdb;  
      return $var;  
    } 

    public function getHostDB(){ 
      $var=$this->_hostdb;  
      return $var;  
    }  
    public function getPassDB(){ 
      $var=$this->_passdb;  
      return $var;  
    } 

    public function getDB(){ 
      $var=$this->_db;  
      return $var;  
    } 
} 

Db.class.php:

class Db { 
    private $server;  
    private $user;  
    private $password;  
    private $data_base; 
    private $link; 
    private $result;  
    static $_instance; 


    private function __construct() { 
      $this->setConnection();  
     $this->connect(); 
     $this->result = null; 
    } 

    private function setConnection() { 
      $conf = Conf::getInstance();  
     $this->server = $conf->getHostDB();  
     $this->data_base = $conf->getDB();  
     $this->user = $conf->getUserDB();  
     $this->password = $conf->getPassDB(); 
    } 

    private function __clone(){ } 

    public static function getInstance() { 

      if (!(self::$_instance instanceof self)){ 
         self::$_instance=new self();  
      }   return self::$_instance; 

    } 


     private function connect() { 

      $link=mysql_connect($this->server, $this->user, $this->password); 
      if ($link){  
       mysql_select_db($this->data_base,$link); 
      } 
      if (!$link){   
       die('Can not connect'); 
      }else{ 
       $this->link = $link;  
      } 

    } 
} 

显然Db.class类,不操作函数getInstance(),因为没有从Conf.class获取数据。

我需要改变在Db.class和Conf.class中的东西?

回答

0

可能是复制/粘贴问题,但您的db构造调用setConnection,而您的方法名称是setConexion。您还在配置文件中省略了分号。

否则,你的代码对我来说运行良好。可能考虑添加一个error_reporting(E_ALL);并从命令行进行测试。你可能有一个包含文件路径的问题,你只是没有看到错误。