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

Khi mệnh đề WHERE của mysql trống, hãy trả về tất cả các hàng

$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
    "SELECT * FROM objects " .
    (empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
    "ORDER BY id DESC";

Ở đâu ESCAPE_MYSQL_STRING là hàm liên quan để thoát chuỗi cho bất kỳ trình điều khiển MySQL nào bạn đang sử dụng.

Một cách khác, mô-đun hơn:

$search = array(
    "select" => "SELECT * FROM objects",
    "where" => "WHERE transactiontype='$randomvariable'",
    "order" => "ORDER BY id DESC"
);

if (empty($randomvariable)) {
    unset($search["where"]);
}

$search = implode(' ', $search);

Điều thú vị về điều này là bạn có thể thêm, xóa hoặc thay đổi truy vấn cho bất kỳ trường hợp nào một cách dễ dàng, dễ dàng truy cập vào bất kỳ phần nào của truy vấn.

Bạn cũng có thể thực hiện việc này với CASE() trong SQL, nhưng nó hơi cồng kềnh và bạn cũng không nên mong đợi hiệu suất tốt:

SELECT * FROM objects
WHERE transactiontype LIKE
    CASE WHEN '$randomvariable' = '' THEN
        '%'
    ELSE
        '$randomvariable'
    END CASE
ORDER BY id DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn từ phần tiếp theo mối quan hệ nhiều đến nhiều

  2. Tổng hợp số lần nhấp và lượt xem quảng cáo

  3. Khó khăn với độ trễ thay đổi

  4. lấy SUM của mỗi người bằng PersonID

  5. Bảng gốc 'performance_schema'. '???' có cấu trúc sai