Соединение Pdo без имени базы данных?

Я пытаюсь создать CMS, и я хочу облегчить жизнь клиенту, поэтому сам создаю базу данных. У меня возникла проблема при попытке сделать это. База данных не создана, поэтому я не могу подключиться к PDO-соединению, а mysql устарел, поэтому я не могу его использовать. У вас есть какие-либо советы для меня о том, как я могу создать PDO-соединение до создания базы данных? как альтернатива mysql_select_db()?

Ответы

Ответ 1

Вы можете запустить PDO-соединение этим, исправьте меня, если я ошибаюсь:

$db = new PDO( "mysql:host=localhost", 'user', 'pass' );

Отличие от этого с обычным соединением - это удаленная часть dbname=[xx], как вы видите.

Кроме того, бесплатный совет, когда вы хотите использовать соединение UTF8:

$db = new PDO( "mysql:host=localhost;charset=UTF-8", 'user', 'pass' );

Для комментария Yehonatan вы можете выбрать базу данных:

$db->exec('USE databaseName');

Ответ 2

Просто отпустите dbname= часть:

try {
    $pdo = new PDO("mysql:host=localhost;", "user", "pass");
    $stmt = $pdo->query("SHOW DATABASES");
    var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
}
catch (PDOException $e) {
    echo $e->getMessage();
}

Дает мне

array(11) {
  [0]=>
  array(1) {
    ["Database"]=>
    string(18) "information_schema"
  }
  [1]=>
  array(1) {
    ["Database"]=>
    string(5) "cdcol"
  }
  [2]=>
  array(1) {
    ["Database"]=>
    string(5) "chica"
  }
  [3]=>
  array(1) {
    ["Database"]=>
    string(9) "downloads"
  }
  [4]=>
  array(1) {
    ["Database"]=>
    string(5) "mysql"
  }
  [5]=>
  array(1) {
    ["Database"]=>
    string(18) "performance_schema"
  }
  [6]=>
  array(1) {
    ["Database"]=>
    string(10) "phpmyadmin"
  }
  [7]=>
  array(1) {
    ["Database"]=>
    string(8) "rishumon"
  }
  [8]=>
  array(1) {
    ["Database"]=>
    string(4) "test"
  }
  [9]=>
  array(1) {
    ["Database"]=>
    string(5) "users"
  }
  [10]=>
  array(1) {
    ["Database"]=>
    string(7) "webauth"
  }
}

как ожидалось.

Ответ 3

Единственное, что я нашел для работы, - это использовать $pdo->query('USE databasename'), чтобы установить базу данных по умолчанию, прежде чем запускать какой-либо запрос.