массив array записать в MySQL

Тема в разделе "PHP", создана пользователем helenfly, 6 апр 2009.

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

    helenfly Создатель

    Регистр.:
    6 мар 2009
    Сообщения:
    18
    Симпатии:
    0
    Допустим, имеется массив
    array ("globoxchange"=array ($wmz_wmr,$wmz_wme,$wmz_wmu),
    "megachange"=array ($wmz_wmr,$wmz_wme,$wmz_wmu));

    Для получения из MySQL массива есть функции, например mysql_fetch_array(), а есть ли обратные функции? Чтобы имеющийся массив записать в БД?
     
  2. ne0zx

    ne0zx

    Регистр.:
    1 ноя 2008
    Сообщения:
    212
    Симпатии:
    74
    Типа "массив" в mysql нет. Можешь записывать либо поэлементно в нужные поля, либо записать в строку массив через определенные разделители, а при вытягивании уже разбить strtok'ом или еще чем-нибудь.

    Код:
     
    string implode  ( string $glue  , array $pieces  )
    
    Возвращает строку, полученную объединением строковых представлений элементов массива pieces , со вставкой строки glue между соседними элементами. 
    
     
    helenfly нравится это.
  3. helenfly

    helenfly Создатель

    Регистр.:
    6 мар 2009
    Сообщения:
    18
    Симпатии:
    0
    Спасибо за совет, сейчас попробую

    Добавлено через 4 минуты
    Т.е организовать работу с записью в текстовые файлы (implode-explode)?
     
  4. ne0zx

    ne0zx

    Регистр.:
    1 ноя 2008
    Сообщения:
    212
    Симпатии:
    74
    PHP:
    <?php

    $array 
    = array('lastname''email''phone');
    $comma_separated implode(" "$array);

    echo 
    $comma_separated// lastname,email,phone

    ?> 
    Записываешь в строку массив, строку записываешь в базу. Не нужно никаких файлов.
     
  5. alica

    alica

    Регистр.:
    28 июл 2008
    Сообщения:
    243
    Симпатии:
    76
    mysql_fetch_array() - это извлечение данных из БД в виде массива, нам не кто не мешает получить их например в виде объектов... и также не чего не мешает запихнуть массив в базу...
     
  6. ne0zx

    ne0zx

    Регистр.:
    1 ноя 2008
    Сообщения:
    212
    Симпатии:
    74
    Чтобы запихнуть массив в базу, в базе нужно сначала создать поле с типом "массив", но мускл не поддерживает такой формат. Если умеешь - покажи.
     
  7. alica

    alica

    Регистр.:
    28 июл 2008
    Сообщения:
    243
    Симпатии:
    76
    Согласен, но зачем нам такой формат, нам вполне подойдет формат TEXT.

    PS. PHP_Master как раз ниже пишет об этом.
     
  8. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Прекратите заниматься извращениями :D

    Чтоб сохранить массив в базе достаточно его сериализовать.
    После извлечения из базы делаем обратную процедуру и имеем свой массив.
     
  9. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Если у массива предполагается постоянная размерность, можно создать таблицу БД и пихать i-й элемент массива в i-е поле таблицы.
    Недостаток: если размерность массива меняется (появляется еще одна пара валют), придется в базе так же добавить поле в данную таблицу для новой пары.
    Достоинство: появляется возможность поиска средствами СУБД по значениям массивов, которые теперь представлены записями таблицы СУБД.
    В вырожденном случае таблица будет иметь единственную запись, содержащую элементы массива.
     
  10. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Если нужен поиск по массиву, надо использовать СУБД, которые это позволяют, а не насиловать мускул и собственный мозг.

    А для хранения массива в mysql ничего лучше /быстрее сериализации или JSON не существует.
     
Статус темы:
Закрыта.