Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von größer oder gleich (>=) und kleiner oder gleich (<=) in SQL SELECT-Anweisungen und PDO

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.