sql >> Database >  >> RDS >> Mysql

voorbereide instructie waarbij waarde in array staat

Twee problemen:

  • De lijst moet worden doorgegeven als seconde argument to find_in_set , dus het zou moeten zijn:

    find_in_set(category, ?)
    
  • Dat argument moet van het type string zijn (door komma's gescheiden waarden). Dus converteer eerst je array naar zo'n string met implode :

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

Code:

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. hoe het totale aantal rijen te krijgen met mysqli

  2. JFreechart-diagram met tijd uit SQL Database

  3. Wat is de limiet van SQL-variabelen die men kan specificeren in een enkele execSQL-query?

  4. Select-instructie om ouder en oneindige kinderen te retourneren