了解PHP的数据库连接变量

时间:2009-08-13 04:13:05

标签: php postgresql

如何只有一个数据库连接变量声明$dbconn

我的登录脚本基于following procedure

  1. 如果用户未通过身份验证,则会将其返回登录页面
  2. 如果用户已通过身份验证,则会获得$_SESSION["logged_in"] = true;
  3. 然后,当用户浏览主页面或需要身份验证的其他页面时,他们只会检查是否设置了$ _SESSION [“auth”]。
  4. 我只在index.php的开头有数据库变量:

     $dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
    

    我的代码中的db_close()无法连接。 我将我的登录脚本发送到使用我的数据库的index.php。

    但是,当我的脚本中没有变量声明时,我得到了无法访问db的标准警告。如果我将声明添加到每个脚本中,我就可以访问db。

2 个答案:

答案 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');