PHP-SQL Подготовленные операторы с переменным числовым именем таблицы [дубликаты]

0

Мне нужна помощь, чтобы сделать этот код:

<?php

$a = $_GET["a"];

$stmt = mysqli_stmt_init($conn);

if (mysqli_stmt_prepare($stmt,"SELECT * FROM '?'")) {

   mysqli_stmt_bind_param($stmt, "i", $a);
   mysqli_stmt_execute($stmt);
   $res = mysqli_stmt_get_result($stmt);

   while($row = mysqli_fetch_array($res)){
      if($row["id"] == 0){
         $title = $row["title"];
         $mal = $row["mal"];
      }
   }

   mysqli_stmt_close($stmt);
}

?>

В моей БД у меня есть несколько таблиц с числовыми именами (1,2,3...), и я хочу получить таблицу, которую я хочу, с переменной $ a в url.

Теги:
mysqli
prepared-statement

1 ответ

0

Вы не можете связывать имена объектов (имя таблицы в этом случае), используя подготовленные операторы, только значения. Вам придётся прибегать к строковым манипуляциям (SQL sanitizing опущен для краткости):

if (mysqli_stmt_prepare($stmt,"SELECT * FROM '$a'")) { # Here!

   mysqli_stmt_execute($stmt);
   $res = mysqli_stmt_get_result($stmt);
  • 0
    Если очистка SQL не указана, значение этого ответа не равно отрицательному.
  • 0
    Скажите, если я ошибаюсь, я не буду уязвим для инъекций?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню