Может ли переменная PHP использоваться в качестве имени таблицы в SQL-запросе? В моем случае переменная PHP, которая идет после FROM, должна быть значением, отправляемым из моего кода 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), поскольку это не параметр.