0

私はこの index.php を持っています:

<?php
require_once ('required1.php');
require_once ('required2.php');

--- some mysqli_query here ---
?>

そのrequired1.phpの中身はこれです:

<?php
$DbServer = 'localhost';
$DbUser = 'username';
$DbPassword = 'password';
$DbName = 'dbname';
$con = mysqli_connect($DbServer, $DbUser, $DbPassword, $DbName);
?>

これは required2.php です:

<?php
require_once 'required1.php';

--- some mysqli_query here ---

mysqli_close($con);
?>

mysqli_close($con);mysql接続がrequired2.phpによってすでに閉じられているため、required2.phpでindex.phpのmysqli_queryが失敗します。

required2.php を独立して動作させるには? つまり、そのファイル (required2.php) で何が起こってもそのままにしておくのです。それを呼び出す他のファイルには何も持ち込まないでください。mysqli_close($con);

それはrequire_onceで可能ですか? またはPHPには、そのようにするための別の機能がありますか? ありがとう!

4

4 に答える 4

0

mysqli_close($con);inを使用するrequired2.phpと接続が閉じられるため、を含めた後はrequired2.php使用$conできなくなります。

required2.php独立したい場合は、ではなく、別のデータベース接続を使用する必要があります$con

于 2013-01-23T14:45:50.090 に答える
0

まず第一に、インクルードされたファイルの接続を閉じる必要は実際にはありません(非常に特殊な例外があるかもしれません...)。

2番目のインクルードを個別に使用する場合は、OOPにリファクタリングする必要があります。コンストラクターを介してデータベース接続が注入されるクラスの場合(依存性注入)、コードの残りの部分にのみ名前が表示されるため、クラスまたはオブジェクトで発生したことがコードの残りの部分に影響を与えることはありません。 。

もちろん、そのオブジェクトは参照によって渡される可能性が高いため、接続を閉じるべきではありませんが、手続き型コードの代わりにオブジェクト/クラスを使用すると、より独立して再利用できるようになります。

于 2013-01-23T14:45:58.787 に答える
0

別の接続を使用するrequire2.phpか、閉じないでください。下部に含めることもできます。

于 2013-01-23T14:45:23.613 に答える
-1

required2.php が現在のスクリプトとは何の関係もありませんが、前述のようにスクリプトを実行するだけでよい場合は、file() を使用して required2.php ファイルを呼び出すことができると思います。これにより、両方のスクリプトが個別に実行され、required2.php で接続を閉じても、現在のスクリプトには影響しません。

于 2013-01-23T15:27:27.350 に答える