массивы в базе данных

Тема в разделе "Базы данных", создана пользователем stasdre, 20 сен 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. stasdre

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    Есть таблица в которой содержиться значение в таком виде:
    каким образом можно произвести выборку по этому полю, если на вход запроса подать переменную содержащую массив:
    PHP:
    $array = (2,4,6,8,5);
    Помогите кто может, очень нужно, ни как не могу понять как это реализовать:thenks:
     
  2. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    199
    Симпатии:
    55
    PHP:
    $array = (2,4,6,8,5); 
    $array implode(",",$array);
    //И запрос тогда примет вид:
    $res=mysql_query("SELECT * FROM tablename WHERE fieldname='{$array}'");
     
    stasdre нравится это.
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    у него впереди стринга запятая идет, надо добавить $array = ",$array"; после implode
     
    stasdre нравится это.
  4. Mr.Emm

    Mr.Emm Постоялец

    Регистр.:
    5 май 2008
    Сообщения:
    147
    Симпатии:
    111
    очень интересно) ...вы не учли того что
    ,1,2,4,6,8 != ,2,4,6,8,5
    необходимо искать в строке:

    PHP:
    $arr = array(2,4,6,8,5); 
      
    $find '';
    foreach(
    $arr as $k => $val) {
     if(
    $k == 0) {
        
    $find .= 'colname LIKE %,'.$val.',%';
      } else { 
        
    $find .= ' OR colname LIKE %,'.$val.',%';
      }


    $sql mysql_query("SELECT * FROM tablename WHERE ".$find);
    + кроме того нужно добавлять запятую и в конец строки: ,1,2,4,6,8, - тогда поиск будет верным к любым числам.
     
    stasdre нравится это.
  5. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    можно немного проще, рекомендую:

    PHP:
    $arr = array(2,4,6,8,5); 
    $find '';
    foreach(
    $arr as $k => $val
        
    $find .= ' OR colname LIKE %,'.$val.',%';
    $sql mysql_query("SELECT * FROM tablename WHERE 0=1 ".$find);  
     
    masterzoro и stasdre нравится это.
Статус темы:
Закрыта.