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

URL पैरामीटर के आधार पर SQL क्वेरी बनाना

ऐसा करने के कई तरीके हैं, लेकिन सबसे आसान तरीका यह होगा कि आप स्वीकार्य कॉलम से लूप करें और फिर उचित तरीके से संलग्न करें।

// I generally use array and implode to do list concatenations. It avoids
// the need for a test condition and concatenation. It is debatable as to
// whether this is a faster design, but it is easier and chances are you 
// won't really need to optimize that much over a database table (a table
// with over 10 columns generally needs to be re-thought)
$search = array();
// you want to white-list here. It is safer and it is more likely to prevent
// destructive user error.
$valid  = array( 'condition', 'brand' /* and so on */ );


foreach( $valid as $column )
{
   // does the key exist?
   if( isset( $_GET[ $column ] ) )
   {
      // add it to the search array.
      $search[] = $column . ' = ' . mysql_real_escape_string( $_GET[ $column ] );
   }
}
$sql = 'SELECT * FROM TABLE_NAME WHERE ' . implode( ' AND ', $search );
// run your search.

अगर आप वाकई 'if' स्टेटमेंट से छुटकारा पाने की कोशिश कर रहे हैं, तो आप इसका इस्तेमाल कर सकते हैं:

$columns = array_intersect( $valid, array_keys( $_GET ) );
foreach( $columns as $column )
{
    $search[] = $column . ' = ' . mysql_real_escape_string( $_GET[ $column ] );
}
$sql = 'SELECT * FROM TABLE_NAME WHERE ' . implode( ' AND ', $search );

लेकिन आप यह निर्धारित करने के लिए वास्तविक बेंचमार्क चलाना चाह सकते हैं कि क्या यह काफी बेहतर विकल्प है।




  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 - utf8 (गैर-अंग्रेज़ी) डेटा में मिलान करने वाला लैटिन (अंग्रेज़ी) फॉर्म इनपुट

  2. AWS ऑरोरा सर्वर कभी-कभी अज्ञात डेटाबेस के साथ प्रतिक्रिया करता है:...

  3. mySQL:20,000 पंक्तियों में डुप्लीकेट खोजने के लिए लेवेनशेटिन दूरी का उपयोग करना

  4. मानक SQL में परिभाषित एकाधिक स्तंभों के साथ "कहां में" है?

  5. क्या MySQL सिस्टम डेटाबेस टेबल को InnoDB में बदला जा सकता है?