假设我在 mySQL 数据库中有很多表。现在,在名为“A.php”的 PHP 页面中,我使用文本框选择了一个特定的表,并在另一个名为“B.php”的 PHP 页面上查看了查询。假设获取我使用的表的变量是,
$tablename=$_POST['textbox'];
查询是,
$sql="SELECT * FROM $tablename WHERE id= '$id'";
然后,假设我插入了一条记录,现在,我想在另一个名为“C.php”的 PHP 页面中查看我的记录,但我选择了“B.php”中的表作为变量,而且我有很多表,但我想要在“B.php”中选择的特定表。我怎样才能做到这一点?急需这种帮助。提前发送!
最佳答案
您可以将表名存储在用户的 session 中,以使其在页面加载时保持不变。
首先,开始 session 。这需要添加到 A.php、B.php 和 C.php 的顶部:
session_start();
接下来,将数据存储在 session 变量中:
$_SESSION['tablename'] = $_POST['textbox'];
然后您可以在任何访问 session 的脚本中需要的任何地方使用该值:
$tablename = $_SESSION['tablename'];
请注意,正如评论者指出的那样,您的 MySQL 语句对 SQL 注入(inject)是开放的。如果必须使用 mysql_* 函数,至少清理数据:
$tablename = mysql_real_escape_string( $_SESSION['tablename'] );
更好的做法是禁止用户直接输入表名:相反,允许他们从列表中进行选择并在内部进行翻译,这样您就可以确保表名有效且格式正确。
有关详细信息,请参阅 How to prevent SQL injection in PHP?
最后,考虑从已弃用的 mysql_* 函数转移到 mysqli或 PDO .这些 API 提供了大量功能来帮助您保护数据。
关于php - 在另一个 php 文件中选择同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302863/