Intenta ajustar un poco la lógica. Al igual que Phoenix Wright, a veces basta con cambiar las cosas para resolverlas:
$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'];
Usar un valor como primer operando para BETWEEN
y IN
no es algo en lo que mucha gente pensaría, pero es tan poderoso;)
Más importante aún (y gracias a Fred -ii- por ayudarme accidentalmente a darme cuenta), min
y max
son nombres de funciones. Si desea utilizarlos como nombres de columna, debe envuélvalos en acentos graves, como lo he hecho en mi código anterior.
Como regla general, debe siempre ponga acentos graves alrededor de los nombres de sus tablas y columnas. No hacerlo es como escribir $foo = bar;
en PHP. Claro, funcionará , pero si bar
pasa a ser un nombre de función o constante, entonces se desata el infierno.