我创建了一个网站,我在数据库上有2个表。第一页有2个链接,点击时将链接的名称发送到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();
&GT; 下面的代码是我想要的变量具有我点击链接名称的链接,当点击链接时,该变量被重定向到此页面。我从php会话中收集的变量我希望出现在tablenamehere文本中。
$sql = "SELECT id, firstname, lastname FROM tablenamehere ORDER BY id DESC LIMIT 500";
$result = $conn->query($sql);
我到目前为止的代码创建了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>";
我只想在这个php文件中打开多个表。感谢您的帮助,如有任何问题,请在下面留言。
答案 0 :(得分:4)
如果我们可以假设您将表名作为参数传递(有点危险),那么您可以执行此操作
<?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";
答案 1 :(得分:1)
我的猜测:访问数据库的脚本是test1.php
。该链接已添加调用参数a
(= newtable):
<a href="test1.php?a=newtable">Register Now!</a>
脚本test1.php
可以像设置$_GET
参数时那样尊重此$_SESSION
参数。您的代码修改将如下所示:
$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);
// ....
$tablename
的值来区分代码。$_SESSION
变量。$_SESSION
变量$_GET['a']
,则显然应由$_SESSION['link']
覆盖,反之亦然。出于安全考虑,不要忘记清理输入参数
$_GET['a']
!