使用多个文件在php中一次访问数据库

时间:2014-03-02 11:17:48

标签: php mysql css

我正在尝试根据表单输入修改php页面。修改取决于mysql数据库查询的值。考虑一下示例文件:

<html>
   <head>
      <link href="a.php" rel="stylesheet" type="text/css" />
   </head>
   <body>
      <form action="" method="post">
      UserName: <input type="text" name="name"><br>
      <input type="submit">
    </form>
      <?php if(isset($_POST)) {
            $user=readUserNameFromDataBase($_POST["name"]);
            if (empty($user)) { echo "Invalid user name!<br>"; }
          }
    ?>
   </body>
</html>

我还需要修改页面的CSS。这是通过收录的css文件a.php

完成的
<?php header("Content-type: text/css"); ?>
body {
  background: <?php  if(isset($_POST)) {
              $user=readUserNameFromDataBase($_POST["name"]);
              if (empty($user)) { echo "#ff0000;"; }
              else { echo "#00ff00;"; }
             } else { echo "#00ff00;"; } ?>
}

这里两次访问数据库似乎有些过分,所以我的问题是:

是否可以访问数据库一次,定义变量$user然后从不同的php标签访问此变量作为超全局或类似的东西?

1 个答案:

答案 0 :(得分:1)

您可以输入一个会话变量,这样您就可以将其保留在该网站上该人的整个访问位置。但是,如果它只是一个页面,你想要保持它,只需引用$user变量。如果没有设置,那么从数据库中获取它。

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    if (!isset($user))
    {
        $user = readUserNameFromDataBase($_POST["name"]);
    }
    if (empty($user)) { /* .. your code .. */ }
}

顺便说一句,检查$ _POST是否设置是一个相当糟糕的主意。因为它是一个超级全球,它总是设置。