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);required2.php 使 index.php 上的 mysqli_query 失败,因为 mysql 连接已被 required2.php 关闭。

如何使 required2.php 独立工作?我的意思是,该文件(required2.php)上发生的任何事情都留在那里。不要将任何东西带入调用它的其他文件中,特别是mysqli_close($con);

require_once 可以吗?或者 PHP 有另一个函数可以做到这一点?谢谢!

4

4 回答 4

0

使用不同的连接require2.php或不要关闭它。您也可以将其包含在底部。

于 2013-01-23T14:45:23.613 回答
0

使用mysqli_close($con);inrequired2.php关闭连接,因此在任何 include of 之后required2.php$con将不可用。

如果你想required2.php独立,你必须使用另一个数据库连接,而不是$con.

于 2013-01-23T14:45:50.090 回答
0

首先,确实没有必要关闭包含文件中的连接(可能有非常具体的例外......)。

如果您想独立使用第二个包含,则应将其重构为 OOP。如果它是一个通过其构造函数(依赖注入)注入其数据库连接的类,它只会向您的其余代码显示其名称,因此在类或对象中发生的事情不会影响您的其余代码.

当然,您仍然不应该关闭您的连接,因为该对象可能会通过引用传递,但使用对象/类而不是过程代码将使其更加独立且可重用。

于 2013-01-23T14:45:58.787 回答
-1

如果 required2.php 与您当前的脚本无关,但您需要做的就是运行您提到的脚本,我觉得您可以使用 file() 调用文件 required2.php。这将分别运行这两个脚本,即使您关闭 required2.php 中的连接,它也不会影响当前脚本。

于 2013-01-23T15:27:27.350 回答