MySQL хранение подобия массивов

Тема в разделе "SQL", создана пользователем -, 24 май 2004.

Статус темы:
Закрыта.
  1. Гость

    Работаю на PHP.

    Подскажите, есть ли возможность в MySQL (3.23) размещать что-то типа массива в поле.

    Значение, как и количество значений, могжет быть любое количество.

    Сейчас я извращаюсь вот так (в поле базы пишу так):
    Код (Text):
    znachenie1|znachenie2|znachenie3
    А в скрипте уже достаю так:
    Код (Text):
    $значения = explode('|',$row['massiv']);
    может можно сразу примерно так (?):
    Код (Text):
    echo $row['massiv'][0]; //znachenie1
     
  2. jaunty

    jaunty Гость

    есть такая функция:
    serialize()
    и еще
    unserialize()
    они и помогут избежать
    а столбцов для хранения массивов нет
     
  3. Guest

    Guest Гость

    У вас видимо проблемы с нормализацией таблицы, раз у вас элемент кортежа должен содержать множество значений. Рекомендую пересмотреть структуру базы данных.
     
  4. Гость

    Конечно, можно. Только не так. Лично я использую следущий метод.

    Код (Text):
    $array = array(1, 2, 3);
    //некий массив

    $array_serialized = serialize($array);
    //эта переменная - текстовая, но содержит наш массив, записанный своим "кодом"

    mysql_query("UPDATE TABLE `table` SET `field` = '".$array_serialized."'");
    //записываем её в таблицу

    $sql = mysql_query("SELECT * FROM `field`");
    //читаем SQL данные

    $temp = mysql_fetch_assoc($sql);

    $array = unserialize( $temp['field'] );
    //получаем свой массив.
    Твой способ плох тем, что сложный ассоциативный (к примеру) массив, как и любой многомерный, ты не сохранишь. А эта функция позволяет сохранить)
     
  5. RegHar

    RegHar Гость

    А в каком типе оптимальнее хранить в MySQL такие серилизованные данные?
     
  6. etc

    etc Гость

    в бинарном, очевидно
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей