Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

मैं तैयार पीडीओ स्टेटमेंट का उपयोग करके ORDER BY params कैसे सेट करूं?

हां, आप इसे सीधे SQL में डालने में फंस गए हैं। कुछ सावधानियों के साथ, बिल्कुल। प्रत्येक ऑपरेटर/पहचानकर्ता को हार्डकोड किया जाना चाहिए आपकी स्क्रिप्ट में, इस तरह:

$orders=array("name","price","qty");
$key=array_search($_GET['sort'],$orders);
$order=$orders[$key];
$query="SELECT * from table WHERE is_live = :is_live ORDER BY $order";

वही दिशा के लिए।

मैंने एक श्वेतसूची में सहायक फ़ंक्शन लिखा था ऐसे मामलों में उपयोग करने के लिए, यह लिखे जाने वाले कोड की मात्रा को बहुत कम कर देता है:

$order = white_list($order, ["name","price","qty"], "Invalid field name");
$direction = white_list($direction, ["ASC","DESC"], "Invalid ORDER BY direction");

$sql = "SELECT field from table WHERE column = ? ORDER BY $order $direction";
$stmt = $db->prepare($sql);
$stmt->execute([$is_live]);

यहाँ विचार यह है कि मूल्य की जाँच की जाए और सही न होने की स्थिति में त्रुटि उत्पन्न की जाए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql प्रदर्शन को देखता है

  2. क्या पायथन MySQL तैयार बयानों का समर्थन करता है?

  3. MySQL से JSON डेटा कैसे प्राप्त करें?

  4. MySQL डिग्री () फ़ंक्शन - रेडियन से डिग्री में कनवर्ट करें

  5. पैटर्न का उपयोग करके सर्च ऑपरेशन के लिए लाइक इन मायएसक्यूएल का उपयोग करना