Опитайте да коригирате малко логиката. Точно като Финикс Райт, понякога е необходимо само да обърнете нещата, за да ги разрешите:
$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'];
Използване на стойност като първи операнд за BETWEEN
и IN
не е нещо, за което много хора биха се сетили, но е толкова мощно;)
По-важното (и благодаря на Fred -ii-, че случайно ми помогна да осъзная), min
и max
са имена на функции. Ако искате да ги използвате като имена на колони, трябва увийте ги в обратни точки, както направих в моя код по-горе.
Като общо правило трябва винаги поставете отметки около имената на таблицата и колоните. Да не го направите е подобно на писане на $foo = bar;
в PHP. Разбира се, ще работи , но ако bar
случайно е име на константа или функция, тогава целият ад избухва.