如何只有一个数据库连接变量声明$dbconn
?
我的登录脚本基于following procedure
$_SESSION["logged_in"] = true;
我只在index.php的开头有数据库变量:
$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
我的代码中的db_close()
无法连接。
我将我的登录脚本发送到使用我的数据库的index.php。
但是,当我的脚本中没有变量声明时,我得到了无法访问db的标准警告。如果我将声明添加到每个脚本中,我就可以访问db。
答案 0 :(得分:2)
在我们深入研究数据库连接的广泛领域之前,我们首先需要了解PHP如何运行这个节目。
每个PHP页面请求都会触发一个新的PHP脚本。虽然您可能已启用会话,但这是一个内部PHP构造仅。数据库将此视为连接到服务器的新连接/进程。因此,只要您调用pg_connect
代码,它就会为数据库创建一个新进程。否则,Postgres不知道你是谁或你想要使用什么会话。此外,一旦父进程终止,它通常会杀死Postgres会话(在这种情况下,PHP脚本运行,然后一旦完成就死掉)。有时这些可以让僵尸漫游在Postgres的街道上,但总的来说,它只会杀死它们。
如果要在PHP脚本中使用SQL代码,则必须在调用Postgres之前使用 脚本连接到数据库。
答案 1 :(得分:0)
如果我记得你的另一个问题,你是否正在重定向到login.php?这意味着不会存在dbconn变量,因为它是在另一个页面上初始化的。
如果你需要index.php中的login.php它可以工作
$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
require_once('login.php');