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

câu lệnh đã chuẩn bị sẵn trong đó giá trị nằm trong mảng

Hai vấn đề:

  • Danh sách phải được chuyển thành thứ hai đối số cho find_in_set , vì vậy nó phải là:

    find_in_set(category, ?)
    
  • Đối số đó phải là kiểu chuỗi (các giá trị được phân tách bằng dấu phẩy). Vì vậy, trước tiên hãy chuyển đổi mảng của bạn thành một chuỗi như vậy bằng implode :

    $csv = implode(",", $category);
    

Mã:

if($ps = $db->prepare("
   SELECT id, product, category, price 
   FROM products
   WHERE price <= ? and find_in_set(category, ?)
   ORDER BY id") {
     $csv = implode(",", $category);
     $ps->bind_param("ds", $price, $csv); 
     $ps->execute();
     $ps->bind_result($id, $name, $cat, $pr);
     while($ps->fetch()) {
       /* ...  echo the results .....  */
     }
    $ps->free_result();
    $ps->close();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hàm php không trả về tất cả kết quả từ truy vấn MySQL trong foreach

  2. Cách áp dụng phân trang cho kết quả của truy vấn SHOW TABLES trong PHP

  3. Các IP duy nhất trong hệ thống bỏ phiếu

  4. Làm thế nào để CHỌN bốn mục mới nhất cho mỗi danh mục?

  5. Lỗi 1062 - Mục nhập trùng lặp '127' cho khóa 'CHÍNH' - không thể tìm thấy lý do