3

我最近开始学习PHP,发现连接数据库的常用方法是:

// create connection to database
$connection = mysql_connect("localhost", "root", "password")
// Select database
$db_select = mysql_select_db("myDB", $connection);
// and finally the query..
$result = mysql_query("SELECT * FROM table", $connection);

现在我的问题是,为什么我们必须在第三步使用 $connection ?!当我们使用“myDB”数据库时,我希望以这种方式编写第三步:

// and finally the query..
$result = mysql_query("SELECT * FROM table", $db_select);

但似乎,这不是它在 php 中的做法。有人可以解释为什么吗?

4

4 回答 4

3

该连接代表一个数据库服务器会话,它为您维护数据库状态。当前选定的数据库只是会话状态的一部分,因此通过传递连接,您也隐含地传递了当前选定的数据库(以及各种其他必要信息)。换句话说,连接选择的数据库更通用。

(正如其他人已经指出的那样,当您的程序只需要访问单个服务器上的单个数据库时,没有必要显式传递连接。默认情况下,MySQL 将使用最近连接的会话。)

于 2012-04-29T15:59:52.187 回答
2

这不是必需的。但是,它非常有用。如果您连接到同一页面上的多个数据库,您可能希望同时使用它们。但是,如果您不指定哪个连接,它只会使用您成功连接的最后一个连接。

<?php
$forum = mysql_connect(...);
$users = mysql_connect(...);

$me = mysql_query("", $users);
$last_forum_post = mysql_query("", $forum);
?>

但是,如果您只有一个连接,则无需将其放入。

于 2012-04-29T15:06:02.713 回答
1

功能说明

mysql_query ( string $query [, resource $link_identifier ] )

mysql_query()-> 向数据库发送查询(针对与指定链接标识符关联的服务器上当前活动的数据库)。

参数

  • 查询 -> SQL 查询。

  • link_identifier -> 如果未指定连接标识符,则假定最后一个由 mysql_connect() 打开的链接。如果没有找到这样的链接,它将尝试创建一个,就好像 mysql_connect () 被调用时没有参数一样。如果未找到或建立连接,则会生成错误级别 E_WARNING 的确认。

于 2012-04-29T14:38:51.350 回答
1

你拿mysql_select_db()错了。
这不是必需品。
没有这个功能你可以使用mysql。
这实际上只是USE dbname查询的别名。

此外,您可以在一个连接中同时使用 2 个或多个数据库。

因此,使用 DB 资源代替连接资源是没有意义的。

于 2012-04-29T15:17:14.017 回答