PHP-在Select语句中使用PHP变量选择SQL表
如何使用变量选择SQL表PHP-在Select语句中使用PHP变量选择SQL表,php,sql,variables,select,Php,Sql,Variables,Select,如何使用变量选择SQL表 $sselect = $_GET['series']; $episodes = mysqli_query($conn, "SELECT * FROM '$sselect'") or die(mysqli_error()); 为什么不使用简单的concat呢 $sselect=$_GET['series']; $SECTIONS=mysqli_query($conn,“从“$sselect”中选择*)或die(mysqli_error())尝试以下操作: 这应该行得通
$sselect = $_GET['series'];
$episodes = mysqli_query($conn, "SELECT * FROM '$sselect'") or die(mysqli_error());
为什么不使用简单的concat呢
$sselect=$_GET['series'];
$SECTIONS=mysqli_query($conn,“从“$sselect”中选择*)或die(mysqli_error())代码>尝试以下操作:
这应该行得通。感谢@Phil,他指出表名应该用后面的勾号括起来。我已经更新了我的答案。额外的单引号用于完成MYSQL查询
$sselect = $_GET['series'];
$episodes = mysqli_query($conn, 'SELECT * FROM `'.$sselect.'`') or die(mysqli_error());
更新:
Phil的意思是,如果使用$GET变量,某人可以很容易地用不同的表名替换URL,从而留下巨大的安全风险。例如,假设我有一个名为users
的表,但我希望$\u GET
变量是以下变量之一:汽车
,铅笔
,或颜色
您希望表单返回如下URL:
www.example.com/index.php?series=pencils
但是,用户可以更改数据来表示:
www.example.com/index.php?series=users
允许用户/攻击者访问机密表。这不是一个好的做法,Phil建议您更改表结构中的模式,这样用户就不会选择表名。您查询的表的可能重复项不应该来自外部输入。听起来你应该重新考虑你的计划schema@charlee我认为那篇文章不能很好地代表任何人都应该做的事情do@Phil请elaborate@CamAcc我已经更新了我的答案,包括Phil想要说的内容。MySQL使用反引号引用架构对象名称(表/列名),而不是双引号~@Phil Right,但我这样的代码似乎仍然有效。“我不知道为什么?”菲尔谢谢,我找到了原因。这是因为我的代码不是用于对象名称,而是用于对象值。如果必须从$\u GET
接受表名,我至少要创建一个表白名单,并确保值与其中一个表名匹配。