PHP: O loop while não funciona após o ajuste de SELECT para prevenção de injeção de SQL

Estou tentando configurar consultas PHP para MySQL de forma a impedir a injeção de SQL (site padrão).

Eu tive algumas consultas INSERT em que alterar isso funcionou bem, masno SELECT a seguir, recebo um erro desde a atualização e parece que o loop while não funciona com as alterações que fiz (funciona bem sem usar a instrução como no código antigo).

Alguém pode me dizer o que estou fazendo de errado aqui?

Novo PHP:

$stmt = $conn->prepare("SELECT ? FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, ?");
$stmt->bind_param('s', $selectedLang);
$stmt->execute();
$result = $stmt->get_result();  
while($arrCalWeekdays = $result->fetch_assoc()){
    $calWeekdays[] = $arrCalWeekdays;
}
$conn->close();

PHP antigo (parte alterada):

$sql = "SELECT " . $selectedLang . " FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, " . $selectedLang;
$result = $conn->query($sql);  
while($arrCalWeekdays = $result->fetch_assoc()){
    $calWeekdays[] = $arrCalWeekdays;
}
$conn->close();

Mensagem de erro:

Erro fatal: chame uma função de membro fetch_assoc () em um não-objeto em /homepages/21/d580042014/htdocs/myform.php na linha 21

Muito obrigado antecipadamente.

questionAnswers(1)

yourAnswerToTheQuestion