sql >> Databasteknik >  >> RDS >> Mysql

förberedd sats där värdet är i array

Två frågor:

  • Listan ska skickas som andra argument till find_in_set , så det borde vara:

    find_in_set(category, ?)
    
  • Det argumentet ska vara av typen string (kommaseparerade värden). Så konvertera först din array till en sådan sträng med implode :

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

Kod:

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. Jag vill hämta data från olika tabellnamn med postgresql-funktionen

  2. PostgreSQL - max antal parametrar i IN-klausul?

  3. PG::Fel i GROUP BY-satsen

  4. [UPPDATERAD 2020-01-23] Microsoft Office 365 Build 1912 bryter ODBC-länkade tabellers identitet