Mysql
 sql >> база данни >  >> RDS >> Mysql

подготвен оператор, където стойността е в масив

Два проблема:

  • Списъкът трябва да се предава като втори аргумент към find_in_set , така трябва да бъде:

    find_in_set(category, ?)
    
  • Този аргумент трябва да е от тип низ (стойности, разделени със запетая). Така че първо преобразувайте своя масив в такъв низ с implode :

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

Код:

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. Помощ за:ГРЕШКА 1025 (HY000):Грешка при преименуване на .... (errno:150)

  2. UnsupportedOperationException с DriverManager.getConnection() на Android

  3. Perl Connection Pooling

  4. PHP mySQL - Кога е най-доброто време за прекъсване на връзката с базата данни?

  5. Повтарящи се събития от календара и някои последни изчисления