powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как хранить картинки в БД
21 сообщений из 21, страница 1 из 1
Как хранить картинки в БД
    #39717113
angrybot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Тут задался вопросом, в цикле php идет несколько картинок, получаю там их названия и кладу в папку. Названия идут тупо kartinka.jpg и тп,
вопрос как их лучше положить в базу ? чтобы потом в цикле по связи разобрать на клиенте, видел где то просто в поле в базе лежит через запятую, где то строками, что посоветуете? и как записать массив в поле что в запрос подставить в insert? Спасибо
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717117
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybotТут задался вопросом, в цикле php идет несколько картинок, получаю там их названия и кладу в папку. Названия идут тупо kartinka.jpg и тп,
вопрос как их лучше положить в базу ?Что именно положить в базу - имена файлов или непосредственно изображения (бинарные данные)?

angrybotчтобы потом в цикле по связи разобрать на клиенте, видел где то просто в поле в базе лежит через запятую, где то строкамиЧто именно предполагается разбирать? Если речь идет об именах файлов, то ряде случаев запятая вполне приемлема (если только она гарантировано не встречается в именах), как и любой другой разделитель. С другой стороны, такой способ далеко не лучший при поиске по имени файла, например.

angrybotчто посоветуете?Изложить условия задачи и проблему более внятно, так, чтобы понятно было не только Вам.
И ещё, Ваш пост очень сложно читать и понимать. Русский язык для Вас не родной?

angrybotкак записать массив в поле что в запрос подставить в insert?Запрос есть текстовая строка. Таким образом, массив или элементы массива необходимо привести к строковым значениям. Как вариант, массив можно серилизовать или преобразовтаь в JSON. Но это очень сильно зависит от задачи, от конкретного случая. Может статься, что лучше хранить пары "ключ=>значение", например.
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717118
angrybot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача хранить только названия имен картинок
пример:
я загрузил к товару 3 картинки:
abfbfb.jpg
dfdffff.jpg
34444.jpg

3 картинки, я хочу эти 3 картинки положить в поле с названием id_image соответственно к товару к кому они принадлежат, сейчас я загружаю картинки только на хост через цикл foreach где их перебираю, а надо после перебора чтобы уходили данные в базу. Вот и спрашиваю как лучше массив картинок подставить в запрос и как их там хранить, только названия повторюсь
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717124
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybotкак лучше массив картинок подставить в запросВ общем и целом, СУБД без разницы, чего Вы понапихали в текстовое поле.
Если Вам удобно будет после получения обрабатывать данные "через запятую" - храните "через запятую". Если в Вашей конкретной задаче окажется, что запятая может быть частью имени "картинки" (например, имя файла " В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!.jpg"), то такой разделитель не подойдет .
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717130
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybot , может что-то лишнее предложу, но мне кажется так будет более правильно.
Если ты при загрузке на сервер картинки просто кладёшь в одну папку - то это изначально некорректное решение. Ведь загрузив две разных картинки с одинаковым именем tovar.jpg ты получишь проблему.

Как это решается ты можешь увидешь например на сайтах типа контакта. Схема такая:
1. Пользователь грузит картинки на сервер через форму.
2. В цикле foreach для каждого файла картинки вычисляется хеш функция. Допустим md5. И для каждого уникального файла (уникального по содержимому) появляется 32-х символьная строка типа из символов 0-F.
3. Далее сохраняешь полученные файлы в папки на сервере организованные по следующему принципу:
- папка первого уровня это первый символ хеша, папка второго уровня - это второй символ хеша. Имя файла - это сам хеш. И получится что например файл 123.jpg хеш от которого - b609.....78 будет располагаться в файловой системе где-то: .../images/b/6/b609....78.jpg
4. В БД для сохранения соответствия картинок товарам такие таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
table files (
   id       SERIAL,
   hash     CHAR(32) UNIQUE,
   origName CHAR(255) NOT NULL
)

table tovar_files (
   id       SERIAL,
   tovarID  BIGINT UNSIGNED NOT NULL,
   fileID   BIGINT UNSIGNED NOT NULL,
   UNIQUE KEY (tovarID, fileID)
)
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717133
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kormotЕсли ты при загрузке на сервер картинки просто кладёшь в одну папку - то это изначально некорректное решение. Ведь загрузив две разных картинки с одинаковым именем tovar.jpg ты получишь проблему.проблема будет не только в этом. если в папке больше 2000 файлов- будут приличные тормоза
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717139
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяkormotЕсли ты при загрузке на сервер картинки просто кладёшь в одну папку - то это изначально некорректное решение. Ведь загрузив две разных картинки с одинаковым именем tovar.jpg ты получишь проблему.проблема будет не только в этом. если в папке больше 2000 файлов- будут приличные тормозаВопрос в том, для чего эти картинки лежат в ФС. Если только после загрузки и на время записи изображений в БД на время конкретной сессии конкретного пользователя - тогда это практически не проблема (даже если пользователь вздумает загрузить сразу несколько image.jpg из разных директорий своего кампутера, это решаемо).
А для долговременного хранения, конечно, по хорошему, так не делают, если только это не "Мой первый сайт, с котором учусь на своих ошибках". С другой стороны, видел десятки вполне приличных сайтов с одномерной структурой хранения картинок. Как-то работают. :)
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717144
angrybot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
Ну это не первый мой проект, просто везде по одной картинке было там я давай картинке id а он уникальный, тк id с автоинкрементом а потом по функции искал ее и отображал на клиенте, вариант с множеством папок к примеру как у экспорта 1с не подходит
Есть какие то решения чтобы быстро записать и попроще разобрать в цикле на клиенте? Буду благодарен
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717160
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybot , твой язык слишком тяжкий для понимания.
У мастера Йоды видно говорить учился ты? :)

Что на клиенте ты хочешь разбирать? Картинки? Которые хранятся на сервере? Поток мыслей своих останови, затем собери в кулак их и когда сможешь обуздать свой разум то сформулируй уже задачу. Именно тогда сам поймёшь всё! :)
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717231
angrybot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постараюсь собрать все в кулак!

Вот как щас хранится название картинки у меня в базе данных:
http://prntscr.com/l5vqmn

поле img
в нем лежит название картинки к каждой записи тип 123.jpg, я хочу к 1 записи загрузить несколько картинок, вот и спрашиваю как лучше записывать названия картинок к записи в поле img, если картинок несколько к примеру 3-4 штуки, и как в таком случае в запрос подставить этот массив названий картинок
вроде объяснил)
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717235
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да хоть и через запятую (или любой другой разделитель) перечислить. Это самый компактный вариант.
Ещё варианты - серилизация и JSON (особенно, если массив ассоциативный).
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717243
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяесли в папке больше 2000 файлов- будут приличные тормоза
Не будут. Только если ты в эту папку начнёшь лазить каким-нибудь файловым менеджером, тогда он будет тормозить при получении полного списка, атрибутов, его сортировке и отображении. А с доступом к файлам по известному имени проблем не будет.
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717244
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНе будут. Только если ты в эту папку начнёшь лазить каким-нибудь файловым менеджером, тогда он будет тормозить при получении полного списка, атрибутов, его сортировке и отображении. А с доступом к файлам по известному имени проблем не будет.прежде чем получить по имени - надо все прочитать всё и атрибуты в том числе.
проверено
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717245
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybotполе img
в нем лежит название картинки к каждой записи тип 123.jpg, я хочу к 1 записи загрузить несколько картинок, вот и спрашиваю как лучше записывать названия картинок к записи в поле img, если картинок несколько к примеру 3-4 штуки, и как в таком случае в запрос подставить этот массив названий картинок
вроде объяснил) https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717248
angrybot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, тогда буду ложить через запятую. Можно пример как в запрос подставить чтобы туда падали картинки, без json думаю

сейчас запрос на insert выглядит так:

Код: sql
1.
2.
3.
4.
5.
6.
'INSERT INTO product '
                . '(name, code, price, category_id, brand, availability,'
                . 'description, is_new, is_recommended, status)'
                . 'VALUES '
                . '(:name, :code, :price, :category_id, :brand, :availability,'
                . ':description, :is_new, :is_recommended, :status)';



Работаю с PDO

поле id_img где будут храниться картинки, как подставить чтобы через запятую перечислить в поле названия?
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717257
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybotполе id_img где будут храниться картинки, как подставить чтобы через запятую перечислить в поле названия?concat_ws
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717266
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяconcat_wsПодозреваю, следующим вопросом будет "Что делать, если в одной статье картинок только три, а в другой статье их четыре?", ибо ТС хочет:angrybotнесколько к примеру 3-4 штукиА потом, вдруг, ещё и пять картинок неожиданно потребуется...

Наверно, проще непосредственно в приложении подготовить строку "через запятую".
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717617
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleНаверно, проще непосредственно в приложении подготовить строку "через запятую".
А потом ощутить все последствия нарушения первой НФ на собственном опыте. Тоже, конечно, вариант. "Не хочешь учиться через голову - будешь убиться через задницу."
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717631
angrybot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Советы конечно один лучше другого )
Народ посерьезнее бы, если не хотите дать ответ на вопрос зачем обсирать и мусорить
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717639
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
angrybotСоветы конечно один лучше другого )
Народ посерьезнее бы, если не хотите дать ответ на вопрос зачем обсирать и мусоритья дал советы - прочитай доки и используй
...
Рейтинг: 0 / 0
Как хранить картинки в БД
    #39717830
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovvkleНаверно, проще непосредственно в приложении подготовить строку "через запятую".
А потом ощутить все последствия нарушения первой НФ на собственном опыте. Тоже, конечно, вариант. "Не хочешь учиться через голову - будешь убиться через задницу."В идеале вообще отдельную таблицу делать под иллюстрации, тогда не возникнет подобных вопросов в принципе. Однако, оно потребует значительных переделок в коде приложения, что вряд ли возможно, когда ставятся вопросы вроде "как записать значения элементов массива через запятую". Ну так то дело хозяйское, хождение по граблям тоже ж штука полезная. Особенно, когда грабли свои.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как хранить картинки в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]