Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于mySQL和PHP的初学者问题,避免在每个页面上连接到DB_Php_Mysql_Sql - Fatal编程技术网

关于mySQL和PHP的初学者问题,避免在每个页面上连接到DB

关于mySQL和PHP的初学者问题,避免在每个页面上连接到DB,php,mysql,sql,Php,Mysql,Sql,我编写了一个简单的php/mysql网页,有page1.php、page2.php等等。因为我在每个页面(或者至少90%的页面)上都使用了数据库,所以我将标准放在它们的顶部 mysql_connect("localhost"," "," "); mysql_select_db(" "); . . mysql_close(); 有我的疑问 我的问题是,我真的需要在每个页面上连接到数据库,还是有什么方法可以避免这种情况并保持连接?一些页面链接到其他页面,我可以利用会话发布一些变量,但我的问题是更全

我编写了一个简单的php/mysql网页,有page1.php、page2.php等等。因为我在每个页面(或者至少90%的页面)上都使用了数据库,所以我将标准放在它们的顶部

mysql_connect("localhost"," "," ");
mysql_select_db(" ");
.
.
mysql_close();
有我的疑问


我的问题是,我真的需要在每个页面上连接到数据库,还是有什么方法可以避免这种情况并保持连接?一些页面链接到其他页面,我可以利用会话发布一些变量,但我的问题是更全球化的内容。

您可以使用持久连接,尽管它不会对您有多大帮助,正确操作可能会很痛苦。在每个页面上进行连接几乎更好,尤其是当数据库服务器与php服务器运行在同一台机器上时。

web本质上是在断开连接的状态下工作的。也就是说,您不知道客户是否会再次提出请求

无论如何,您绝对希望在每个页面上连接/断开与数据库的连接。这是确保您没有泄漏连接和站点保持响应的唯一方法

大多数系统都内置了处理连接池的方法,这使得请求新连接的动作非常快,因此您不必担心。

尝试使用

mysql_pconnect() 
来自PHP.net

“与mysql_connect()非常相似,但有两个主要区别

首先,在连接时,函数将首先尝试查找已使用相同主机、用户名和密码打开的(持久)链接。如果找到,将返回该链接的标识符,而不是打开新连接


其次,在脚本执行结束时,与SQL server的连接不会关闭。相反,链接将保持打开状态以供将来使用(mysql_close()不会关闭mysql_pconnect()建立的链接)。”

如果你只是想让它成为你不需要硬编码到每个文件的顶部,在一个文件中写下连接代码,然后使用
require/path/to/file/name.php
,它会在每次都建立它。注意:它可能是include而不是require。

这不是OP要求的。我没有正确阅读它,但是对这篇文章投反对票似乎有点过头了,我可以评论一下,我已经纠正了。虽然我没有投反对票,但它的目的是让社区简单地说这篇文章是否有用;而最初的答案不是。认为这是一个教训,花时间去理解一个给定的问题,然后开枪。此外,我刚刚对当前的答案投了更高的票,因为这是一个好答案。我觉得很犹豫是否将此推荐给不理解其含义的人。无论如何,您仍然需要显式调用mysql_connect,即使使用持久连接。仍然需要建立脚本->连接池链接。持久连接只需保持PHP模块->mysql链接的活动状态。感谢您的支持,我想我必须继续使用
include()
,因为正如您所说,这很复杂。除非您真正了解持久连接的工作原理,否则不要使用它们。人们经常使用这些,因为这“似乎”是个好主意,最终导致MySQL服务器缺少连接插槽。+1表示“这对您没有多大帮助”。看起来开销很大,但MySQL为此进行了高度优化。许多高流量网站使用这种方法。您将要执行的查询比建立连接本身消耗更多的资源和时间。持久连接是地狱。所以我想,拥有一个
include()
对我来说是最好的解决方案。@Nikolai:是的。这是在PHP中执行数据库访问的最常见的方法之一。@Chris Lively感谢我在以前的项目中这样做过,因为我讨厌每次都对SQL连接进行硬编码,这样更易于维护。