Spróbuj trochę dostosować logikę. Podobnie jak Phoenix Wright, czasami wystarczy odwrócić różne rzeczy, aby je rozwiązać:
$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'];
Używanie wartości jako pierwszego operandu dla BETWEEN
i IN
nie jest czymś, o czym wielu ludzi pomyślałoby, ale jest tak potężne;)
Co ważniejsze (i dzięki Fredowi -ii- za przypadkowe pomogło mi w zrozumieniu), min
i max
są nazwami funkcji. Jeśli chcesz użyć ich jako nazw kolumn, musisz zawiń je w backticki, tak jak to zrobiłem w powyższym kodzie.
Zasadniczo powinieneś zawsze umieść backticki wokół nazw tabel i kolumn. Nie zrobienie tego jest podobne do pisania $foo = bar;
w PHP. Jasne, działa , ale jeśli bar
stanie się stałą lub nazwą funkcji, wtedy rozpętuje się piekło.