Mysql
 sql >> Baza danych >  >> RDS >> Mysql

przygotowana instrukcja, w której wartość jest w tablicy

Dwie kwestie:

  • Lista powinna być przekazana jako druga argument do find_in_set , więc powinno być:

    find_in_set(category, ?)
    
  • Ten argument powinien być typu string (wartości oddzielone przecinkami). Więc najpierw przekonwertuj swoją tablicę na taki ciąg za pomocą 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. enum('tak', 'no') vs tinyint -- którego użyć?

  2. Jak połączyć Django z bazą danych MySQL przez połączenie SSL?

  3. błąd ciągle wyskakujący w moich kodach (połączenie już otwarte)

  4. PDO:połączenie z bazą danych na zdalnej stronie internetowej

  5. Czy możesz podzielić/rozbić pole w zapytaniu MySQL?