• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Guest
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Работаю на PHP.

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

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

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

Guest

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

Guest

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

Код:
$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'] );
//получаем свой массив.

Твой способ плох тем, что сложный ассоциативный (к примеру) массив, как и любой многомерный, ты не сохранишь. А эта функция позволяет сохранить)
 
R

RegHar

А в каком типе оптимальнее хранить в MySQL такие серилизованные данные?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!