@lutlk

Как в PHP mysqli_query использовать переменные?

Приветствую всех хабрецов!
Наткнулся на такую проблему: мне нужно создать таблицу через PHP, но в качестве названия должна идти переменная. Мои тщетные попытки выглядят так:
mysqli_query($link, "CREATE TABLE $game_name (
      game_id INT(11) DEFAULT $output[id],
      name  VARCHAR(40) NOT NULL,
      image VARCHAR(100),
      descr VARCHAR(100) NOT NULL,
      percents VARCHAR(6),
      making TEXT(1000),
      vid_link VARCHAR(100)
    )");

Как я понял, суть скрывается в кавычках, но я уже перепробовал всё: '$game_name' ; `$game_name`, переводил всю функцию в одинарные кавычки и через точки добавлял переменные - ничего не помогало. Но если я заменю переменную $game_name на `example_name`, то всё работает. Памагити(
P.S. Такая же проблема и с добавлением контента в таблицу:
mysqli_query($link, "INSERT INTO $game_name(name, image, percents, descr)
  VALUES ('$name', '$image', '$percent', '$descr')");

Тут тоже уже всё перепробовал.
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
"CREATE TABLE {$game_name} (
game_id INT(11) DEFAULT {$output['id']},
...

Но вообще, создавать под каждую игру отдельную таблицу - это крайне извратная архитектура базы данных. Учитывая ваш предыдущий вопрос, вам нужна одна единственная таблица achievements, записи в которой будут связана с играми по полю game_id.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Просто используйте "Машинописный обратный апостроф" ( ` ) для экраниривания имени таблицы:
в языке SQL версии СУБД MySQL предпочтительно заключение названий таблиц и их полей в косые кавычки, поскольку это предотвращает путаницу с зарезервированными именами. Например, SELECT * FROM WHERE вызовет ошибку, а SELECT * FROM `WHERE` — нет (при условии, что существует таблица WHERE).


mysqli_query($mysqli, "CREATE TABLE `$game_name` (
      `game_id` INT(11) DEFAULT $output[id],
      `name`  VARCHAR(40) NOT NULL,
      `image` VARCHAR(100),
      `descr` VARCHAR(100) NOT NULL,
      `percents` VARCHAR(6),
      `making` TEXT(1000),
      `vid_link` VARCHAR(100)
    )");


Здесь можно запустить PHP код
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы