我目前设置了三个表。我想当有人登录时,他们会在选择下拉列表中选择其中一个选项,然后进入该单独的数据库。
E.g。最喜欢的颜色
<select name="color">
<option value="Red">Red</option>
<option value="Blue">Blue</option>
<option value="White">White</option>
</select>
挑选所有红色,进入红色数据库,全部蓝色进入蓝色数据库等等。
由于
答案 0 :(得分:0)
您要做的是将数据按特定值分开。这是很正常的事情,但是你试图把它弄错。拥有变量表名几乎没有充分的理由 - 相反,您应该使用列来分隔这些数据。
处理这种情况的更好方法是创建一个表格(E.G colors
,其中color
列可以指定已选择的变量。
E.G:
$query = "INSERT INTO colors (color) VALUES (?)";
如果问号是有问题的变量(在准备好的声明中)。
这样,所有变量都在一个表中,但仍然以用户选择的颜色分隔,并且可以这样排序。
如果你想忽略我上面的多重警告你会以错误的方式解决这个问题(毕竟你是你自己的人,可以为自己做决定),这就是你如何按照你的要求做到这一点(但同样,我真的非常做 NOT 推荐这种方法。)
如果这样做,您应该检查以确保所选的选项与可能的选择列表匹配:
$possible = ["Red", "Blue", "White"];
if(in_array($_POST['color'], $possible)) {
$query = "INSERT INTO {$_POST['color']} ...";
}
这样做会通过串联到字符串中的变量来阻止SQL注入。
如果您只是插入users变量而不先检查它,则用户可以更改客户端下拉列表的实际值,这可能会使您的应用程序面临风险。
注意:我不建议这样做 - 维护起来比较困难,这不是做这种事情的正确方法。