Соединение 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')
, чтобы установить базу данных по умолчанию, прежде чем запускать какой-либо запрос.