ऐसा इसलिए है क्योंकि 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);