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

Kueri berparameter dengan beberapa istilah pencarian opsional

Anda sudah terlindungi dari injeksi sql, karena Anda menggunakan mysqli_stmt_bind_params yang akan keluar dengan benar untuk Anda.

Sunting. Anda dapat beralih ke beberapa kerangka kerja basis data untuk mendapatkan kode yang bersih dan indah.

Kalau tidak... ini spageti gaya lama... tapi aku menyukainya :D

Cukup mudah untuk memperluas kode Anda agar berfungsi dengan jumlah parameter yang tidak diketahui. Anda hanya perlu mengulang parameter Anda dan pada saat yang sama 1. buat string kueri Anda dengan notasi tanda tanya, dan tambahkan parameter Anda ke array, yang akan Anda teruskan ke maxdb_stmt_bind_param ( resource $stmt , string $types , array &$var ).

Jadi akan terlihat seperti ini. Ini mengasumsikan setidaknya SATU parameter yang ada (tapi sepele untuk menghindari ini).

$sql = "SELECT * FROM tbl_data WHERE ";
$and = '';
$types = '';
$parameters = array();
foreach($_POST as $k => $v) {
  // check that $k is on your whitelist, if not, skip to the next item
  $sql .= "$and $k = ?";
  $and = " AND ";
  $parameters[] = $v;
  $types .= 's';
}
$stmt_query = mysqli_prepare($db, $sql);
mysqli_stmt_bind_params($stmt_query, $types, $parameters);


  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 5.5 &5.6 nilai default

  2. Pemantauan &Manajemen Operasi MySQL 8.0 dengan ClusterControl

  3. Bagaimana cara menghapus semua tabel MySQL dari baris perintah tanpa izin basis data DROP?

  4. Membuat array dari tabel MySQL

  5. Masukkan data ke dalam database mysql jarak jauh dengan metode POST dari perangkat iOS