No puede vincular nombres de columnas y tablas, solo datos. Debe especificar la tabla y luego enlazar para su '%calendar weekday%'
.
$stmt = $conn->prepare("SELECT " . $selectLang . " FROM `TranslationsMain` WHERE `location` LIKE ? ORDER BY `sortOrder`, " . $selectedLang);
$stmt->bind_param('s', $calendar_weekday);
Si desea utilizar nombres dinámicos de tablas/columnas, debe realizar la lista blanca mínima de esos elementos. Puede crear una lista blanca dinámica preguntando a la base de datos qué columnas son válidas para una tabla de base de datos determinada. Por ejemplo:
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA` = `database_name`
AND `TABLE_NAME` = `table_name`
Puede colocar toda esta información en matrices y luego verificar para asegurarse de que los nombres de tabla/columna utilizados en la consulta estén en las matrices. Se debe realizar una consideración adicional para los nombres de las tablas y las columnas, asegurándose de que no se utilicen palabras clave o reservadas para estos nombres.
Por último, use acentos graves alrededor de los nombres de las tablas/columnas validadas cuando invoque los valores para las consultas dinámicas. Esto cubrirá cualquier cambio potencial en la lista de palabras clave/reservadas y proporciona una capa adicional de protección.