Prøv at justere logikken lidt. Ligesom Phoenix Wright er der nogle gange alt, hvad det kræver at vende tingene rundt for at løse 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'];
Brug af en værdi som den første operand for BETWEEN
og IN
er ikke noget mange mennesker ville komme i tanke om, men alligevel er det så kraftfuldt;)
Endnu vigtigere (og tak til Fred -ii- for ved et uheld hjalp mig med at indse), min
og max
er funktionsnavne. Hvis du vil bruge dem som kolonnenavne, skal du skal pak dem ind i backticks, som jeg har gjort i min kode ovenfor.
Som en generel regel bør du altid sæt backticks omkring dine tabel- og kolonnenavne. Hvis du ikke gør det, svarer det til at skrive $foo = bar;
i PHP. Selvfølgelig virker det , men hvis bar
tilfældigvis er et konstant- eller funktionsnavn, så bryder helvede løs.