如何跨不同页面使用mysqli持久连接

时间:2014-02-01 22:07:26

标签: php mysql mysqli

我有一个使用不同PHP页面处理代码的网络应用程序。

在每个页面的顶部,我打开与同一数据库的mysqli连接(使用相同的用户/密码):

$link = mysqli_connect("$mysql_server", "$mysql_user", "$mysql_pw", "$mysql_db");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

我理解使用单个持久连接更好。如何在所有页面中启用此功能?

仅使用$link = mysqli_connect("p:" . $mysql_server, "$mysql_user", "$mysql_pw", "$mysql_db");进行第一次连接是否容易?

在什么情况下这种联系会关闭?

3 个答案:

答案 0 :(得分:3)

$db = mysqli_connect("p:notlocalhost","notroot","","catalog") or die("Error " . mysqli_error($link));

它是“p:” - 当在主机名之前添加时,创建持久连接。后来在不同的页面上重复使用。你仍然在每一页上调用相同的构造函数。

答案 1 :(得分:2)

您不理解持久性连接的含义。没有人说你可以在页面上使用一次创建的 PHP资源,这肯定是不可能的。持久连接对PHP-DBMS互连具有内在的技术意义,不会以任何方式影响您的代码。

为避免在不同页面上编写相同的代码,您可以使用include运算符包含某种带有所有常用代码和设置的引导文件,包括您的数据库连接代码。

至于持久连接 - 暂时避免使用它,因为如果在没有知识的情况下使用它会带来更多弊大于利。

另请注意,您永远不应使用引号来处理变量。 $mysql_user变量,但"$mysql_user"字符串,这是不一样的。

答案 2 :(得分:0)

脚本执行结束后非持久连接关闭。

打开持久连接时,请求SQL服务的每个后续页面都可以重用与SQL Server相同的已建立连接。

简而言之,对于您必须连接的每个请求。

恕我直言,如果可能的话,使用PHP的SPL的PDO库进行数据库连接。通过使用其准备好的语句,您可以排除SQL注入。

查看波纹管链接中的单例示例,以获得最简单的实现。

http://www.php.net/manual/en/class.pdo.php