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);

ここで私の質問は、なぜ 3 番目のステップで $connection を使用する必要があるのですか?! 「myDB」データベースを使用しているため、3 番目のステップは次のように記述します。

// 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);
?>

ただし、接続が 1 つしかない場合は、接続する必要はありません。

于 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

さらに、1 つの接続内で一度に 2 つ以上のデータベースを操作できます。

したがって、接続リソースの代わりに DB リソースを使用しても意味がありません。

于 2012-04-29T15:17:14.017 に答える