У меня есть таблица с идентификаторами столбцов, имидж и название организации. Сначала я вставил одно изображение для каждой организации, но мне нужно обновить его несколькими изображениями для каждой организации. Я использую php ver 5.4.16 и mysql ver 5.6.12.
Попробуйте использовать разделитель, например, используйте запятую и сохраните ее в таблице:
id image organization 1 path_to/img1.png org_name1 2 path_to/img1.png,path_to/img2.png org_name2
и позже, после того, как вы извлечете запись, используйте функцию разрыва, чтобы извлечь ее в массив следующим образом:
$images = explode(",", $data->image);
PS: пожалуйста, дайте достаточно длины для поля изображения, например, дайте ему varchar (4000), чтобы убедиться в отсутствии усечения строки
Разделите таблицу на две части и используйте идентификатор вашей таблицы в качестве внешнего ключа в новой таблице изображений. («нормализация» и «отношения» должны быть вашими поисковыми тегами) https://en.wikipedia.org/wiki/Database_normalization
Или если вы не можете использовать json для вставки нескольких материалов. http://php.net/manual/en/book.json.php
Вам нужно добавить новую таблицу с именем «image» со столбцами:
- id_img - image - ref_organisation_id (foreign_key)
Лучшим решением, на мой взгляд, для вашей проблемы было бы слегка перепроектировать схему базы данных – существующая таблица не сможет хранить несколько изображений для одной и той же компании, судя по обзору таблиц, которые вы указали в вопросе.
Должна быть таблица для orgainisations и другая таблица для изображений, связанных с этими организациями. В таблице изображений будет ключ, который ссылается на таблицу организаций.
Очень быстро собрать примерную структуру базы данных
+----+------------------+ | id | name | +----+------------------+ | 1 | ACME Web Company | | 2 | ACME ISP | +----+------------------+ +----+--------+------------+ | id | org_id | image | +----+--------+------------+ | 1 | 1 | logo.jpg | | 2 | 1 | banner.jpg | | 3 | 1 | badge.png | | 4 | 2 | logo.jpg | | 5 | 2 | banner.gif | +----+--------+------------+ create table if not exists `organisations` ( `id` int(10) unsigned not null auto_increment, `name` varchar(50) not null, primary key (`id`) ) engine=innodb auto_increment=3 default charset=utf8; insert into `organisations` (`id`, `name`) values (1, 'acme web company'), (2, 'acme isp'); create table if not exists `org_images` ( `id` int(10) unsigned not null auto_increment, `org_id` int(10) unsigned not null, `image` varchar(50) not null, primary key (`id`), key `org_id` (`org_id`), constraint `fk_org` foreign key (`org_id`) references `organisations` (`id`) on delete cascade on update cascade ) engine=innodb auto_increment=6 default charset=utf8; insert into `org_images` (`id`, `org_id`, `image`) values (1, 1, 'logo.jpg'), (2, 1, 'banner.jpg'), (3, 1, 'badge.png'), (4, 2, 'logo.jpg'), (5, 2, 'banner.gif');