Försök att justera logiken lite. Precis som Phoenix Wright, ibland allt som krävs för att vända på saker och ting för att lösa dem:
$pk = $db->prepare("SELECT `grade` FROM `grading` WHERE ? BETWEEN `min` and `max`");
$pk->execute(array($mark));
$ind = $pk->fetch(PDO::FETCH_ASSOC);
echo $ind['grade'];
Använder ett värde som den första operanden för BETWEEN och IN är inget många skulle tänka på, men det är så kraftfullt;)
Ännu viktigare (och tack till Fred -ii- för att han av misstag hjälpte mig att inse), min och max är funktionsnamn. Om du vill använda dem som kolumnnamn måste du linda in dem i backticks, som jag har gjort i min kod ovan.
Som en allmän regel bör du alltid sätt backticks runt dina tabell- och kolumnnamn. Att inte göra det är ungefär som att skriva $foo = bar; i PHP. Visst, det kommer att fungera , men om bar råkar vara ett konstant- eller funktionsnamn så bryter helvetet löst.