Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menghasilkan kueri SQL berdasarkan parameter URL

Ada beberapa cara untuk melakukan ini, tetapi cara termudah adalah dengan mengulang kolom yang dapat diterima dan kemudian menambahkan dengan tepat.

// 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.

Jika Anda benar-benar mencoba untuk menghilangkan pernyataan 'jika', Anda dapat menggunakan ini:

$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 );

Tetapi Anda mungkin ingin menjalankan tolok ukur yang sebenarnya untuk menentukan apakah itu opsi yang jauh lebih baik.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Codeigniter - Model Akses Dan Basis Data pada Perutean

  2. MySQL - pilih 3 tabel dengan sintaks gabungan kiri yang benar

  3. Urutkan berdasarkan urutan nilai dalam pernyataan pilih dalam klausa di mysql

  4. Apa yang dimaksud dengan collation?

  5. pengkodean mySQL dan PHP