sql >> Databáze >  >> RDS >> Mysql

připravený příkaz, kde je hodnota v poli

Dva problémy:

  • Seznam by měl být předán jako druhý argument pro find_in_set , takže by to mělo být:

    find_in_set(category, ?)
    
  • Tento argument by měl být typu string (hodnoty oddělené čárkou). Nejprve tedy převeďte pole na takový řetězec pomocí implode :

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

Kód:

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. Databázová řešení pro stavební management

  2. php kód pro testování pdo je k dispozici?

  3. Ovlivňují omezení cizích klíčů transformace dotazů v Oracle?

  4. Jak exportovat a importovat existujícího uživatele (s jeho oprávněními!)