Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le paramètre dans la clause order by ne commande pas -mysql, C#

C'est parce que ORDER BY utilise un identifiant de base de données (c'est-à-dire une colonne, un alias ou une expression). Vous passez la valeur en paramètre.

En d'autres termes, la requête résultante serait équivalente à

... ORDER BY 'StartTime' ...

Si vous validez l'entrée de l'utilisateur par rapport à un ensemble connu de valeurs (c'est-à-dire les colonnes disponibles), vous pouvez simplement interpoler la valeur dans la chaîne de requête, par exemple (très approximatif)

$orderBy = $_GET['order_by'];
if (!in_array($orderBy, $orderableColumns)) {
    throw new Exception('Invalid "order by" specified');
}
$query = sprintf('... ORDER BY `%s` ...', $orderBy);