Переменная PDO является частью имени таблицы
Я пытаюсь связать переменную, которая является частью имени таблицы при использовании связывания PDO, чтобы предотвратить внедрение SQL.
мой запрос похож на это:
select * from user_:id_user.kb_:id_kbase "."_frequencies"
что должно привести к
select * from user_1.kb_123_frequency
где user_1.kb_123_frequency
предполагаемое имя таблицы. Однако, когда параметры связаны в:
$st->bindParam(':id_user', $id_user, PDO::PARAM_INT);
$sth->bindParam(':id_kbase', $id_kbase, PDO::PARAM_INT);
$sth->execute();
он не связывается и выдает ошибку:
Исключение произошло.
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: :id_kbase
я верю, что это из-за того, что я пытаюсь объединитьkb_:id_kbase
" с "_frequencies
" но :kb_kbase
это параметр.
поэтому мой вопрос: можете ли вы передать имя таблицы в качестве параметра, и если да, то как сделать привязку, когда параметр является частью имени таблицы?
Ваша помощь очень ценится
1 ответ
Подготовленные заявления не работают таким образом.
Лучший (самый безопасный) способ сделать это - принять только определенный набор значений, например, используя switch
заявление.
switch ($tbl) {
case "baz":
case "foo":
$tbl = "bar".$tbl;
break;
}