これは、ORDER BY
が原因です。 データベース識別子(つまり、列、エイリアス、または式)を使用します。値をパラメータとして渡します。
つまり、結果のクエリは
と同等になります。... ORDER BY 'StartTime' ...
既知の値のセット(つまり、使用可能な列)に対してユーザー入力を検証する場合は、値をクエリ文字列に単純に補間できます(例:(非常に大まかな)
$orderBy = $_GET['order_by'];
if (!in_array($orderBy, $orderableColumns)) {
throw new Exception('Invalid "order by" specified');
}
$query = sprintf('... ORDER BY `%s` ...', $orderBy);