Я создаю базу данных для игры, которую я работаю, и мне нужно, чтобы пользователи могли убить друг друга, так что я создал таблицу, как это:Подготовленные заявления с переменными столбцов
...
`alive1` => Player 1's status
`alive2` => Player 2's status
`alive3` => Player 3's status
`alive4` => Player 4's status
...
Мне нужно иметь возможность изменять эти столбцы в базе данных на основе каждого случая и с помощью ввода непосредственно от пользователя. Однако, что-то вроде этого:
$stmt = $link->prepare("UPDATE `games` SET `alive{$_GET["player"]}`=0 WHERE `id`=?")
уязвим для SQL-инъекций. Есть ли способ «привязать» имя столбца к запросу, чтобы я мог безопасно модифицировать таблицу?
Правильный ввод для $ _GET ["player"] должен быть просто целым числом 1..4, поэтому, я думаю, я мог бы проверить вход непосредственно, если это необходимо, и убедиться, что это одна из этих четырех возможностей, но я надеялся, что будет более элегантное решение. Это может возникнуть позже в другом проекте, где набор возможных входных данных будет намного больше, а жесткое кодирование каждого случая будет очень трудоемким.
Любые идеи?
Я вижу, так что я будет просто делать что-то вроде 'if ($ id> 0 и $ id <5) // do statement'? – David
@MathNerdProductions Yep. Я бы пошел с '$ id> = 1 && $ id <= 4'. – zerkms
Отлично. Это очень помогает. Благодаря! – David