PHP变量作为SQL查询中的表名

PHP变量可以用作SQL查询中的表名吗? 在我的例子中,FROM之后的PHP变量应该是从我的JQuery代码发送的值。 我希望SQL查询根据从JQuery发送的值进行更改(不同的值取决于选择的选项框的选项)。

$file_absolute = ---Placeholder for correct file path---; include_once($file_absolute); $mysql = new mysqli($db_host, $db_username, $db_password, $db_name); $verb_value = $_POST['verb_value']; $mysql->query("SET CHARACTER SET 'utf8'"); $result = $mysql->query("SELECT present_tense FROM $verb_value"); 

你可以这样做,是的。 你是否想要它是另一回事 – 如果你在SQL查询中添加用户输入,你就会有一个巨大的SQL注入漏洞。

也就是说,使用表名,您可以实现白名单,并将传递的值与其进行比较,以获得安全措施。

但是,您不能将表名(或列名)作为绑定参数传递 – 它们需要作为查询的一部分生成。

双引号字符串将解析其中的任何变量,因此这将起作用。 单引号字符串不会。

但是,这通常不被认为是安全的。 我不确定你是否可以使用bindParam方法实现这一点(我使用PDO,而不是mysqli),因为它实际上不是一个参数。