Задать вопрос
@viktorross

Как выводить и записывать значения в mysql через запятую или |?

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

function get_X($id) {

global $db;

$x_user=$db->fetchAssocList("select `нужная строка` from `class_users` where `user_id`='777'");

return $x_user;

}


так вот в этой строке лежит запись 123, 124, 125 и т.д
мне нужно чтобы при выводе цикла получалось так, что каждое число до запятой выводилось в итоге как новая строка

Возможно так будет удобнее это реализовать

function get_X($id) {

global $db;

$result=$db->query ("select `нужная строка` from `class_users` where `user_id`='777'");

while($row = $db->fetchAssocRes($result)) {

      $нужная строка = $row['id'];
}
return $x_user;

}


Также подскажите пожалуйста какой запрос будет добавлять в строку через запятую число, а не обновлять всю запись целиком

$add_number=$db->query("UPDATE `class_users` SET `нужная строка` = `нужная строка`+ ,123"); -что тут я не знаю


кто-нибудь знает как это делать?
  • Вопрос задан
  • 918 просмотров
Подписаться 1 Простой 13 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Не должно быть в одной ячейке таблицы сразу несколько значений - это один из основных принципов реляционных баз данных.
Сделать такое, конечно, можно, но это будет говнокодом и в приличном обществе за такое бьют канделябрами.
По хорошему, вам надо создать отдельную таблицу, связанную с основной отношением многие-к-одному.
Ответ написан
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
UPDATE `class_users` SET `нужная строка` = CONCAT(`нужная строка`, ',123')


Так же есть функция FIND_IN_SET() которая позволяет искать значение в строке разделённой запятыми, чтобы не прибегать к использованию LIKE '%...%'

Как уже ответили ранее, подобные трюки являются анти-шаблонами.
Я считаю что допустимо подобный подход использовать чтобы компактно хранить список чего-то (денормализация). Но если вы потом по значениям из списка захотите что-то искать или фильтровать, то это всегда будет FULL SCAN запрос, который в 999999999 раз будет медленнее и грузовее для CPU нежели если бы вы хранили основную запись и связанные списки отдельно, так как во втором случае возможно эффективно использовать индексы для поиска.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽