Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL WHERE LIKE không hoạt động với nhiều trường sử dụng liên kết php và pdo

Vấn đề có lẽ là $this->phone trống khi bạn chạy truy vấn.

Trong trường hợp đó, truy vấn sẽ là SELECT * FROM [...] OR WHERE phone LIKE '%%' điều này sẽ luôn trả lại mọi thứ.

Giải pháp:bỏ qua tiêu chí điện thoại nếu không được cung cấp hoặc ( cảnh báo hack! ) sử dụng một giá trị sẽ không bao giờ xuất hiện trong cột đó.

Một cách khác để làm điều này là thay đổi truy vấn thành một cái gì đó như

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

Và sau đó ràng buộc :phone_provided thành 1 if $this->phone được xác định, 0 nếu không. Tương tự như vậy với :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. mysql - Cách xử lý tìm kiếm truy vấn với các ký tự đặc biệt% (phần trăm) và _ (gạch dưới)

  2. rắc rối kết nối cơ sở dữ liệu từ xa android

  3. Mysql Chọn hàng thứ hai

  4. Flask SQLAlchemy không đóng các kết nối cơ sở dữ liệu MySQL

  5. Vòng lặp MySQL qua các bảng