Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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
理解PHP';s数据库连接变量_Php_Postgresql - Fatal编程技术网

理解PHP';s数据库连接变量

理解PHP';s数据库连接变量,php,postgresql,Php,Postgresql,数据库连接变量,$dbconn如何只能有一个声明? 我的登录脚本基于 如果用户未通过身份验证,则会将其返回到登录页面 如果用户经过身份验证,他将获得$\u会话[“logged\u in”]=true 然后,当用户浏览主页或其他需要验证的页面时,他们只需检查是否设置了$\u会话[“auth”] 数据库变量仅位于index.php的开头: $dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=12

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

我的登录脚本基于

  • 如果用户未通过身份验证,则会将其返回到登录页面
  • 如果用户经过身份验证,他将获得
    $\u会话[“logged\u in”]=true
  • 然后,当用户浏览主页或其他需要验证的页面时,他们只需检查是否设置了$\u会话[“auth”]
  • 数据库变量仅位于index.php的开头:

     $dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
    
    我不通过
    db\u close()
    在我的代码中的任何地方连接。 我将我的登录脚本源代码设置为index.php,它使用我的数据库


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

    我们需要首先了解PHP是如何在这里运行的,然后才能深入研究广泛的数据库连接世界

    每个PHP页面请求触发一个新的PHP脚本。虽然可以打开会话,但这只是一个内部PHP构造。数据库将此视为连接到服务器的新连接/进程。因此,只要调用
    pg_connect
    code,它就会在数据库上为它创建一个新进程。否则,博士后不知道你是谁,也不知道你想使用什么课程。此外,一旦父进程死亡,它通常会终止Postgres会话(在本例中,PHP脚本运行,然后在完成后死亡)。有时这些会让僵尸在博士后的街道上游荡,但总的来说,这只会杀死他们


    如果您想在PHP脚本中使用SQL代码,您必须在调用Postgres之前连接到该脚本中的数据库。

    如果我记得您要重定向到login.PHP的另一个问题?这意味着dbconn变量不存在,因为它是在另一个页面上初始化的

    如果您需要index.php中的login.php,它就可以工作了

    
    $dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123");
    require_once('login.php');
    

    我的实验表明,这一事实不可能是真的:我需要index.php中的login.php,而代码中没有两次$dbconn声明——两次警告。似乎有必要向login.php添加$dbconn变量。login.php是类还是函数?如果是这样,它将没有所需的变量范围。除非您使用全局$dbconn;从函数/classIt内部看,两者都不是。我在很多php文件中都有这些代码,我刚刚发现从具有数据库连接的文件中获取变量的一种方法是将db中的数据保存到一个变量中,然后将该变量作为函数的参数传递到第二个文件中。