2

mysql_connect() の値を、プロジェクト内のすべての php ファイルでアクセスできるグローバル変数に保存する必要があります$db_ServerVal = mysql_connect()

プログラムの開始時に mysql_connect を 1 回だけ呼び出せるようにする必要があります。

次に、すべてのphpファイルで-それ$db_ServerValは有効でなければなりません。初めてではありません。毎回。私が電話するまでmysql_close( $db_ServerVal);

データベース接続$GLOBALS[]を保存するために、php で定義済みの配列であるを使用できますか?$db_ServerVal

もう 1 つの問題は、ブラウザー ウィンドウが閉じたときに 'close' イベントが必要であるため、mysql_close( $db_ServerVal);.

index.php ファイルの最後で呼び出すことはできませんmysql_close()。データベースが途中で閉じてしまうためです。その後、データベースにアクセスするたびにmysql_connect()再度呼び出す必要があります。

各データベース呼び出しの前後に呼び出すことはできますがmysql_connect()、それが標準的な方法であるかどうかはわかりません。mysql_close()

4

5 に答える 5

2

まず、db_connection引数を省略すると、すべてのmysql_ *関数が最後に開いた接続を使用するため、この変数を格納する必要はありません。複数のデータベース接続を同時に開く場合にのみ、これを保存する必要があります。

次に、スクリプトの最後でmysql接続が自動的に閉じます。ほとんどの場合、閉じる必要はありません。

第三に、mysql_*はもう使用しないでください。mysqli_*または推奨されるPDOクラスを使用してください。

于 2011-06-10T21:45:10.480 に答える
2

毎回データベースを閉じないでください。スクリプトの最後に暗黙的に接続が閉じられるため、接続をまったく閉じないように選択することもできます。

常に接続できるようにしたい場合は、そのための関数を作成できます。

$_connection = false;
function getConnection()
{
  global $_connection;
  if (!$_connection)
    $_connection = mysql_connect( ... );
  return $_connection;
}

function closeConnection()
{
  global $_connection;
  if ($_connection)
    mysql_close($_connection);
  $_connection = false;
}

もちろん、実際のクラスに接続を埋め込むことはさらに優れていますが、これにより問題の修正を開始できます。赤ちゃんのステップ。:)

于 2011-06-10T21:50:12.360 に答える
1

これは私のdbクラスからのものですが、これはあなたを助けるはずだと思います。初めて必要になったときに開き、ページの最後で閉じます。または、私と同じように、dbクラスのコンストラクタで接続し、デストラクタで閉じます。

//Constructor Code
$this->link_id = mysql_connect($this->db_host, $this->db_user, $this->db_pass);


//Destructor Code
@mysql_close($this->link_id);

これが私が使用する2つの方法のサンプルです。

    //forward php4 to constructor
    function db_class() {

        return $this->__construct();
    }

    //constructor
    function __construct() {

        register_shutdown_function(array(&$this, "__destruct"));

        $this->link_id = mysql_connect($this->db_host, $this->db_user, $this->db_pass);
        mysql_select_db($this->db_name, $this->link_id);

}
    //destructor
    function __destruct() {


        @mysql_close($this->link_id);

    }
于 2011-06-10T21:44:52.937 に答える
1

私は通常、クエリごとではなく、ページごとにデータベース接続呼び出しを行います。したがって、接続する必要のある各ファイルの先頭に、データベース接続を行うファイルを含めます。

require('db_connect.php');

そして、接続が必要なページで何かをした後、それを閉じます。あなたがすべきことはあなたのニーズに基づいています、しかしその意味で、それは依存します。

于 2011-06-10T21:46:01.253 に答える
1

接続オブジェクトをグローバル変数に格納し、$GLOBALSを介してアクセスできます。持続的接続を使用している場合を除いて(使用している場合は何をしているのかを知っておく必要があります)、PHPスクリプトが終了すると、データベース接続は自動的に閉じます。

于 2011-06-10T21:46:40.767 に答える