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");
答案 0 :(得分:4)
你可以这样做,是的。你是否想要它是另一回事 - 如果你在SQL查询中添加用户输入,你就会有一个巨大的SQL注入漏洞。
也就是说,使用表名,您可以实现白名单,并将传递的值与其进行比较,以获得安全措施。
但是,您不能将表名(或列名)作为绑定参数传递 - 它们需要作为查询的一部分生成。
答案 1 :(得分:0)
双引号字符串将解析其中的任何变量,因此这将起作用。单引号字符串不会。
但是,这通常不被认为是安全的。我不确定你是否可以使用bindParam方法来实现这一点(我使用PDO,而不是mysqli),因为它实际上不是一个参数。