Essayez d'ajuster un peu la logique. Tout comme Phoenix Wright, il suffit parfois de retourner les choses pour les résoudre :
$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'];
Utilisation d'une valeur comme premier opérande pour BETWEEN
et IN
n'est pas quelque chose auquel beaucoup de gens penseraient, pourtant c'est tellement puissant ;)
Plus important encore (et merci à Fred -ii- de m'avoir accidentellement aidé à comprendre), min
et max
sont des noms de fonction. Si vous souhaitez les utiliser comme noms de colonne, vous devez enveloppez-les de backticks, comme je l'ai fait dans mon code ci-dessus.
En règle générale, vous devriez toujours mettez des backticks autour de vos noms de table et de colonne. Ne pas le faire revient à écrire $foo = bar;
en PHP. Bien sûr, ça va marcher , mais si bar
s'avère être un nom de constante ou de fonction, alors l'enfer se déchaîne.