我正在尝试创建一个 CMS,我想让我的客户生活更轻松,所以我自己创建了数据库。我在尝试执行此操作时遇到了问题。该数据库未创建,因此我无法使用 PDO 连接进行连接,并且mysql
已弃用,因此我无法使用它。您对我如何在创建数据库之前创建 PDO 连接有什么建议吗?像mysql_select_db()
替代品?
问问题
11093 次
4 回答
36
您可以通过此启动 PDO 连接,如果我错了,请纠正我:
$db = new PDO("mysql:host=localhost", 'user', 'pass');
dbname=[xx]
如您所见,与正常连接的区别在于已移除的部分。
当您想使用 UTF-8 连接时,还有一个免费提示:
$db = new PDO("mysql:host=localhost;charset=utf8mb4", 'user', 'pass');
为了发表评论,Yehonatan
您可以通过以下方式选择数据库:
$db->exec('USE databaseName');
于 2012-07-11T12:13:11.383 回答
0
只需放下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"
}
}
正如预期的那样。
于 2012-07-11T12:15:45.553 回答
0
我发现唯一可行的方法是$pdo->query('USE databasename')
在运行任何查询之前使用设置默认数据库。
于 2012-12-27T10:29:53.663 回答
0
使用空字符串也可以,例如dbname=;
无需添加更多逻辑来删除所有 dbname 部分。
$db_name = '';
$pdo = new PDO(
sprintf('mysql:host=%s;dbname=%s;charset=%s',
$db_host, $db_name, $db_charset),
$db_user,
$db_pass
);
于 2021-12-12T00:26:56.067 回答