Versuchen Sie, die Logik ein wenig anzupassen. Genau wie bei Phoenix Wright reicht es manchmal aus, Dinge umzudrehen, um sie zu lösen:
$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'];
Verwenden eines Werts als ersten Operanden für BETWEEN
und IN
ist etwas, woran viele Leute nicht denken würden, aber es ist so mächtig;)
Noch wichtiger (und danke an Fred -ii- für die versehentliche Hilfe bei der Erkenntnis), min
und max
sind Funktionsnamen. Wenn Sie sie als Spaltennamen verwenden möchten, müssen Sie müssen Wickeln Sie sie in Backticks ein, wie ich es in meinem obigen Code getan habe.
Als allgemeine Regel sollten Sie immer Setzen Sie Backticks um Ihre Tabellen- und Spaltennamen. Wenn Sie dies nicht tun, ist es so, als würden Sie $foo = bar;
schreiben in PHP. Sicher, es wird funktionieren , aber wenn bar
zufällig eine Konstante oder ein Funktionsname ist, dann bricht die Hölle los.