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

pernyataan yang disiapkan di mana nilai ada dalam array

Dua masalah:

  • Daftar harus diteruskan sebagai kedua argumen ke find_in_set , jadi seharusnya:

    find_in_set(category, ?)
    
  • Argumen itu harus bertipe string (nilai yang dipisahkan koma). Jadi pertama-tama konversikan array Anda ke string seperti itu dengan implode :

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

Kode:

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. Daftar MySQL Semua Duplikat

  2. Bagaimana mengubah nilai default kolom menggunakan prosedur

  3. MySQL Memahami Gabungan Dasar

  4. Bagaimana cara menyorot perubahan/perbedaan dalam satu paragraf teks dari yang lain?

  5. mungkinkah memfilter kumpulan kueri setelah kueri? django