我有一个使用不同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");
进行第一次连接是否容易?
在什么情况下这种联系会关闭?
答案 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注入。
查看波纹管链接中的单例示例,以获得最简单的实现。