Javascript 如何将php会话转换为可用变量

Javascript 如何将php会话转换为可用变量,javascript,php,mysql,session,Javascript,Php,Mysql,Session,我已经创建了一个网站,我有两个数据库表。第一个页面有两个链接,单击后会将链接名称发送到php会话。然后,它将带您进入一个页面,该页面旨在根据php会话中保存的数据查看其中一个数据库 我试图实现的是让这些链接打开该文件中的表,当单击链接时,该表将打开。我不想为每个表创建一个新的.php文件,因为我希望能够简单地在一个文档中添加和访问这些表,而不是多个文档 这是我的问题。在那个文档上,它让我从我的数据库中访问表,我想在变量中访问它(下面的代码)。下面的代码将解释我需要知道的内容 这是我在表中查看数据

我已经创建了一个网站,我有两个数据库表。第一个页面有两个链接,单击后会将链接名称发送到php会话。然后,它将带您进入一个页面,该页面旨在根据php会话中保存的数据查看其中一个数据库

我试图实现的是让这些链接打开该文件中的表,当单击链接时,该表将打开。我不想为每个表创建一个新的.php文件,因为我希望能够简单地在一个文档中添加和访问这些表,而不是多个文档

这是我的问题。在那个文档上,它让我从我的数据库中访问表,我想在变量中访问它(下面的代码)。下面的代码将解释我需要知道的内容

这是我在表中查看数据的代码

 $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "myDB";


    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
         die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "SELECT id, firstname, lastname FROM tablenamehere  ORDER BY id DESC LIMIT 500";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {

         while($row = $result->fetch_assoc()) {
             echo "<p>". $row["firstname"]. " " . $row["lastname"] . "</p>";
         }
    } else {
         echo "0 results";
    }

    $conn->close();
到目前为止,我所拥有的创建php会话但尚未连接到链接的代码如下

<html>
<body>
<a href="test1.php?a=newtable">Register Now!</a>
</body>
</html>
<?php

session_start();
?>

<?php
 if(isset($_GET['a'])){
    $_SESSION['link']=$_GET['a'];
 }

 echo "the veriable is " . $_SESSION['link'] . "<br>";


我猜:访问数据库的脚本是
test1.php
。该链接已添加调用参数
a
(=newtable):

笔记:
  • 在我的示例中,我假设所有表都以相同的方式处理。当然,您可以根据
    $tablename
    的值来区分代码
  • 您最有可能不需要
    $\u会话
    变量
  • 如果由于任何原因,您必须使用
    $\u会话
    变量
    $\u GET['a']
    显然应该被
    $\u会话['link']
    覆盖,反之亦然
  • 出于安全原因,不要忘记清理输入参数
    $\u GET['a']


如果我们假设您将表名作为参数传递(有点危险),那么您可以这样做

<?php

if(isset($_GET['a'])){
    $_SESSION['link']=$_GET['a'];
}


$sql = "SELECT id, firstname, lastname 
        FROM {$_SESSION['link']}
        ORDER BY id 
        DESC LIMIT 500";

为了正确理解,您试图实现的是通过单击链接而不重定向到另一个页面来显示表格?不,它重定向到另一个页面,但在重定向的页面上,我想显示多个表格,不是一次显示所有表格,而是显示的表格将取决于单击的链接。但是我不想为不同的表使用不同的文件。因此,我想使用php会话来保存被单击的链接的名称,该链接的名称是表的名称,我希望该表加载到打开表的文件中@乌鲁洛克。如果您需要提出更多问题,请随时提问。只需在其他文件中阅读您的会话,您就可以按照创建会话的页面上相同的方式再次阅读会话。(记住执行会话_start()first.IMHO最好更准确地描述步骤流程,以便我们了解哪个链接/重定向调用什么脚本。到目前为止,我们在代码中还没有看到重定向,只看到用户单击的链接。链接,超链接:用户单击的链接。重定向:标题(“位置:url…”)这是通过脚本发送到浏览器的,浏览器会自动调用新的url。请向OP解释为什么其他解决方案可能是更好的方法。谢谢。在我的网站上,我有一个页面是您添加新表的页面。带有链接的页面是显示这些表的页面。我想在一个文档中访问这些表,但一次只能访问一个表由单击的链接决定的时间。如果这有帮助,那么我认为这应该对您有所帮助。但我不确定您为什么要使用会话作为仅使用
$\u GET['a']
可以。虽然您需要清理该变量,因为有人可以在该参数中传递任何内容。如果我理解正确,我是否必须添加,您甚至不需要每次单击链接时都发送$GET参数“a”的$u会话。您只需确保“a”参数具有正确的值。您认为“a”参数具有正确的值是什么意思?这些都在单独的页面上,它仍然没有加载。我的假设是,用户(总是)单击带有适当参数“a=table_name”集的“”之类的链接。(可能您也是通过PHP脚本生成此链接的。)。
<a href="test1.php?a=newtable">Register Now!</a>
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
} 

// Get and sanitize table name
$tablename = $conn->real_escape_string($_GET['a']);

$sql = "SELECT id, firstname, lastname FROM $tablename ORDER BY id DESC LIMIT 500";
$result = $conn->query($sql);

// ....
<?php

if(isset($_GET['a'])){
    $_SESSION['link']=$_GET['a'];
}


$sql = "SELECT id, firstname, lastname 
        FROM {$_SESSION['link']}
        ORDER BY id 
        DESC LIMIT 500";
if(isset($_GET['a'])){
    $_SESSION['link']=$_GET['a'];
}


switch ($_SESSION['link']) {
case : 'a'
    $tbl_name = 'table1';
    break;
case : 'b'
    $tbl_name = 'table2';
    break;
default:
    $tbl_name = 'default_table';
}


$sql = "SELECT id, firstname, lastname 
        FROM $tbl_name 
        ORDER BY id 
        DESC LIMIT 500";