Nelze svázat názvy sloupců a tabulek, pouze data. Musíte zadat tabulku a poté svázat pro '%calendar weekday%'
.
$stmt = $conn->prepare("SELECT " . $selectLang . " FROM `TranslationsMain` WHERE `location` LIKE ? ORDER BY `sortOrder`, " . $selectedLang);
$stmt->bind_param('s', $calendar_weekday);
Pokud chcete používat dynamické názvy tabulek/sloupců, měli byste provést minimální whitelist těchto položek. Dynamický bílý seznam můžete vytvořit tak, že se zeptáte databáze, jaké sloupce jsou platné pro danou databázovou tabulku. Například:
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA` = `database_name`
AND `TABLE_NAME` = `table_name`
Všechny tyto informace můžete umístit do polí a poté zkontrolovat, zda jsou názvy tabulek / sloupců použité v dotazu v polích. Zvláštní pozornost by měla být věnována názvům tabulek a sloupců a ujistěte se, že pro tyto názvy nejsou použity žádné klíče/rezervovaná slova.
Nakonec použijte při volání hodnot pro dynamické dotazy zpětné značky kolem ověřených názvů tabulek / sloupců. To pokryje veškeré potenciální změny v seznamu klíčových/rezervovaných slov a poskytne další vrstvu ochrany.