2 require_once在同一文件上创建MySQL连接问题

时间:2013-01-23 14:39:42

标签: php mysqli

我有这个index.php:

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

--- some mysqli_query here ---
?>

里面有什么必需品。这是:

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

这是必需的2.php:

<?php
require_once 'required1.php';

--- some mysqli_query here ---

mysqli_close($con);
?>

required2.php上的mysqli_close($con);使index.php上的mysqli_query失败,因为mysql连接已经被required2.php关闭。

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

是否可以使用require_once?或PHP有另一个功能,使它像那样?谢谢!

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

mysqli_close($con);中使用required2.php关闭了连接,因此在包含required2.php之后,$con将无法使用。

如果您希望required2.php独立,则必须使用其他数据库连接,而不是$con

答案 2 :(得分:0)

首先,实际上不需要关闭所包含文件中的连接(可能存在非常具体的例外情况......)。

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

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

答案 3 :(得分:-1)

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