mysql_select_db

(PHP 4, PHP 5)

mysql_select_db选择一个 MySQL 数据库

警告

此扩展在 PHP 5.5.0 中已弃用,并在 PHP 7.0.0 中移除。应该改用 MySQLiPDO_MySQL 扩展。另请参见 MySQL: 选择 API 指南。此函数的替代方法包括

描述

mysql_select_db(string $database_name, resource $link_identifier = NULL): bool

设置与指定链接标识符关联的服务器上的当前活动数据库。对 mysql_query() 的所有后续调用都将在活动数据库上执行。

参数

database_name

要选择的数据库的名称。

link_identifier

MySQL 连接。如果未指定链接标识符,则假定为 mysql_connect() 最后打开的链接。如果未找到此类链接,它将尝试创建链接,就像 mysql_connect() 被调用时没有参数一样。如果未找到或建立连接,则会生成 E_WARNING 级别错误。

返回值

成功时返回 true,失败时返回 false

示例

示例 #1 mysql_select_db() 示例

<?php

$link
= mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
die(
'Not connected : ' . mysql_error());
}

// 使 foo 成为当前数据库
$db_selected = mysql_select_db('foo', $link);
if (!
$db_selected) {
die (
'Can\'t use foo : ' . mysql_error());
}
?>

注释

注意:

为了向后兼容性,可以使用以下已弃用的别名:mysql_selectdb()

另请参见

添加笔记

用户贡献笔记 6 个笔记

11
james at gogo dot co dot nz
20 年前
如果您同时在同一台服务器上使用两个数据库,请小心。默认情况下,mysql_connect 对具有相同服务器参数的多个调用返回相同的连接 ID,这意味着如果您执行

<?php
$db1
= mysql_connect(...stuff...);
$db2 = mysql_connect(...stuff...);
mysql_select_db('db1', $db1);
mysql_select_db('db2', $db2);
?>

那么 $db1 实际上将选择数据库 'db2',因为对 mysql_connect 的第二次调用只是返回了已打开的连接 ID!

您有两个选择,要么您必须在执行的每个查询之前调用 mysql_select_db,要么如果您使用的是 php4.2+,则 mysql_connect 有一个参数可以强制创建新的链接。
-1
Maarten
18 年前
关于如果对 mysql_connect() 使用相同的参数来打开连接:这可以通过对该函数使用 'new_link' 参数来避免。

此参数自 PHP 4.2.0 起可用,允许您即使在调用使用相同参数时也打开新的链接。
-21
anotheruser at example dot com
16 年前
跨数据库联接查询,扩展了 Dan Ross 的帖子...

实际上,这是 mysql 的一项特定功能,但值得在此处注意。只要 mysql 用户被授予了对所有从其提取或推送到其中数据的数据库和表的正确权限,它就可以工作。虽然 mysql_select_db 函数选择一个数据库,但 mysql 语句可以引用另一个数据库(在另一个数据库表中引用字段的语法为 'database.table.field')。

<?php

$sql_statement
= "SELECT
PostID,
AuthorID,
Users.tblUsers.Username
FROM tblPosts
LEFT JOIN Users.tblUsers ON AuthorID = Users.tblUsers.UserID
GROUP BY PostID,AuthorID,Username
"
;

$dblink = mysql_connect("somehost", "someuser", "password");
mysql_select_db("BlogPosts",$dblink);
$qry = mysql_query($sql_statement,$dblink);

?>
-34
miloshio at gmail dot com
12 年前
您可以选择 MySQL 数据库而无需使用此函数。
只需在连接到 MySQL 后
<?php $connection = mysql_connect("dabatbasehost", "username", "password"); ?>
执行此查询
<?php mysql_query("USE somedatabase", $connection); ?>
-33
duncan at berrimans dot co dot uk
12 年前
请注意,手册有点误导性,它指出:-

"设置与指定链接标识符关联的服务器上的当前活动数据库。对 mysql_query() 的所有后续调用都将在活动数据库上执行。

第二句话不是真的,或者充其量是不清楚的。

mysql_query() 手册条目实际上正确地指出它将默认使用由 mysql_connect() 打开的最后一个链接。

因此,如果您有两个连接,则需要在调用 mysql_query 时指定连接,或者再次发出连接以确保第一个数据库成为默认数据库,仅仅使用 mysql_select_db 不会使第一个数据库成为对 mysql_query 的后续调用的默认数据库。

这可能只有当两个数据库位于不同的服务器上时才明显。
-42
me at khurshid dot com
16 年前
在同一台服务器上连接到多个数据库的问题是,每次您执行
mysql_connect(host, username, passwd);
它会为每个连接重用 'Resource id',这意味着您最终只会得到一个连接引用。为了避免这种情况,请执行
mysql_connect(host, username, passwd, true);
使所有连接保持独立。
To Top