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

MySQL WHERE LIKE tidak bekerja dengan banyak bidang menggunakan php dan pdo bind

Masalahnya mungkin $this->phone kosong saat Anda menjalankan kueri.

Dalam hal ini, kuerinya adalah SELECT * FROM [...] OR WHERE phone LIKE '%%' yang akan selalu mengembalikan segalanya.

Solusi:tinggalkan kriteria telepon jika tidak disediakan atau (peringatan retas! ) gunakan nilai yang tidak akan pernah muncul di kolom tersebut.

Cara lain untuk melakukan ini adalah mengubah kueri menjadi sesuatu seperti

SELECT *
  FROM directory
 WHERE name LIKE :name 
   AND :name_provided = 1
    OR phone LIKE :phone
   AND :phone_provided = 1

Dan kemudian ikat :phone_provided ke 1 jika $this->phone didefinisikan, 0 sebaliknya. Begitu juga dengan :name_provided .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Objek kelas DateTime tidak dapat dikonversi ke string

  2. Kinerja MySQL:Pengantar GABUNG dalam SQL

  3. MySql menggabungkan LIMIT dan ORDER BY

  4. Bagaimana cara mendapatkan tag paling populer secara keseluruhan dari tabel yang dinormalisasi?

  5. Apa perbedaan antara addlash PHP dan mysql(i)_escape_string?