如何使用变量来选择SQL表?
$sselect = $_GET['series'];
$episodes = mysqli_query($conn, "SELECT * FROM '$sselect'") or die(mysqli_error());
答案 0 :(得分:0)
为什么不使用简单的concat?
$sselect = $_GET['series'];
$episodes = mysqli_query($conn, "SELECT * FROM ".$sselect) or die(mysqli_error());
答案 1 :(得分:0)
试试这个: 这应该工作。感谢@Phil,他指出表名应该包含在后面的标记中。我已经更新了我的答案。额外的单引号用于完成MYSQL查询。
$sselect = $_GET['series'];
$episodes = mysqli_query($conn, 'SELECT * FROM `'.$sselect.'`') or die(mysqli_error());
<强>更新强>
Phil所说的是,如果您使用$ _GET变量,则可以使用不同的表名轻松替换该URL,从而留下巨大的安全风险。例如,假设我有一个名为users
的表,但我希望$_GET
变量为以下之一:cars
,pencils
或{ {1}}。
你想要的是表单返回这样的URL:
colors
但用户可以更改数据来代表:
www.example.com/index.php?series=pencils
允许用户/攻击者访问机密表。这不是一个好习惯,Phil建议您在表结构中更改模式,这样用户就不会选择表名。