Как можно добавить несколько выборок базы данных?

#php #mysql

#php #mysql

Вопрос:

Я хочу добавить содержимое нескольких полей базы данных MYSQL, чтобы они разделялись запятой.

  $customer_email    = db_unqq($customer_row['email']);
  

Но у меня есть поля для 5 разных электронных писем. Так что в идеале $customer_email будет

 $customer_email =
(
db_unqq($customer_row['email1']);
db_unqq($customer_row['email2']);
db_unqq($customer_row['email3']);
db_unqq($customer_row['email4']);
db_unqq($customer_row['email5']);
)
  

но разделяйте каждую из них запятой (чтобы их можно было отправлять в виде электронных писем)

Ответ №1:

Вы могли бы использовать group_concat() для выполнения этого на сервере, но это специфично для MySQL, а длина по умолчанию ограничена 1024 символами.

 SELECT ..., GROUP_CONCAT(email)
FROM ...
WHERE ...
GROUP BY userID
  

Это предполагает, что электронные письма хранятся в отдельной таблице, к которой вы присоединяетесь, однако.

Комментарии:

1. это разные поля одной таблицы

2. Ах. В этом случае SELECT ... CONCAT(email1, ',', email2, ',', ....) должно сработать

3. Итак, текущий PHP-скрипт $customer_email = db_unqq($customer_row[’email’]); будет обслуживать все поля, которые я использовал в объединении?

4. Да, PHP не имеет понятия о sql-запросах или синтаксисе sql, он просто увидит, что из базы данных выводится единственное строковое поле, которое, оказывается, содержит результаты этого CONCAT() вызова.

5. как насчет разделения их запятыми (именно так скрипт mail () распознает несколько электронных писем)

Ответ №2:

Я думаю, что ваши электронные письма находятся в одной таблице, как вы сказали, в нескольких полях. Они действительно должны быть в отдельной таблице. Это позволило бы ответу Марка Б. работать. Вы также могли бы использовать CONCAT_WS с вашей текущей схемой.

 Select CONCAT_WS(',', email1, email2, etc..)
FROM...
WHERE ...
  

Я по-прежнему рекомендую вам использовать отдельную таблицу, это дает вам больше гибкости, позволяя вам легче обрабатывать ее в вашем коде, не прибегая к пользовательским функциям sql

Комментарии:

1. Если вы можете, это следует изменить, что произойдет, если вам нужно шесть адресов электронной почты… ваша схема нарушена. Если у вас есть вторая таблица с адресами электронной почты, связанными с помощью уникального первичного ключа.