#php #mysql #json #relationship #group-concat
#php #mysql #json #связь #group-concat
Вопрос:
Мне кажется, что использование GROUP_CONCAT()
лучше всего работает при запросе данных для отображения списка, что потребовало бы нескольких отдельных запросов, когда они не используются GROUP_CONCAT()
(с большими таблицами). Верно ли это в любом случае?
И есть ли какие-либо другие недостатки, помимо GROUP_CONCAT_MAX_LEN
необходимости быть достаточно большими?
Он также довольно прост в использовании, когда вы позволяете MySQL выполнять грязную работу; это генерирует действительный json (сгенерированный sql):
<<<SQL
SELECT CONCAT(
'[{',
GROUP_CONCAT(
CONCAT(
'"id":"', table.id,
'"' "," '"filename":"', REPLACE('"', '"', table.filenamehash),
'"' "," '"originalname":"', REPLACE('"', '"', table.originalname),
'"'
) SEPARATOR '},{'
),
'}]'
) AS file_data
SQL;
Комментарии:
1. Если какое-либо из значений содержит кавычки или обратную косую черту, они не будут экранированы должным образом.
2. Это серьезный недостаток. Я бы пожертвовал некоторой производительностью, чтобы преодолеть это. Я добавил функции ЗАМЕНЫ, чтобы преодолеть эту проблему, я думаю, этого должно быть достаточно?