Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-在Select语句中使用PHP变量选择SQL表_Php_Sql_Variables_Select - Fatal编程技术网

PHP-在Select语句中使用PHP变量选择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())尝试以下操作: 这应该行得通

如何使用变量选择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())

尝试以下操作: 这应该行得通。感谢@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
接受表名,我至少要创建一个表白名单,并确保值与其中一个表名匹配。