SQLSTATE [HY000] [1049]未知数据库'register_login'

时间:2015-12-10 16:54:03

标签: php mysql

我不确定这里发生了什么。我更改了数据库名称。我已经进入phpMyAdmin并复制并粘贴名称,以确保数据库是正确的。这是我的代码。

class DB {
  private static $_instance = null;
  private $_pdo,
          $_query,
          $_error = false,
          $_results,
          $_count = 0;

  private function __construct() {
    try{
      $this->_pdo = new PDO('mysql:host='. Config::get('mysql/host') . ';dbname= ' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
    } catch(PDOException $e){
      die($e->getMessage());
    }
  }

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

这是config的类,

class Config {
  public static function get($path = null){
    if($path){
      $config = $GLOBALS['config'];
      $path = explode('/', $path);

      foreach($path as $bit){
        if(isset($config[$bit])){
         $config = $config[$bit];
          }
        }
      return $config;
    }
    return false;
  }
}

这是我创建的init.php文件。

session_start();

$GLOBALS['config'] = array(
  'mysql' => array(
    'host' =>  '127.0.0.1',
    'username' => 'root',
    'password' => 'root',
    'db' => 'register_login'
  ),
  'remember' => array(
    'cookie_name' => 'hash',
    'cookie_expiry' => 604800
  ),
  'session' => array(
    'session_name' => 'user'
  )
);

spl_autoload_register(function($class) {
  require_once 'classes/' . $class . '.php';
});

require_once 'functions/sanitize.php';

这是索引

require_once 'core/init.php';

$user = DB::getInstance()->get('users', array('username', '=', 'Taylor'));
 echo $user;
if(!$user->count()){
  echo 'No user in table';
} else {
  foreach($user->results() as $user){
    echo $user->username, '<br>';
  }
}

1 个答案:

答案 0 :(得分:5)

你错误中的

SQLSTATE[HY000] [1049] Unknown database ' register_login'

你在register_login之前看到那个空格?它正在寻找一个名称的数据库,前面有一个空格,所以它当然不存在,反过来又会把这个错误抛给你。

此处dbname= ' . Config::get('mysql/db')不应该有任何空格,因此您需要将其更改为dbname='.Config::get('mysql/db'),并确保该行没有其他空格。

  • PDO DSN不应包含任何空格。