Я пытаюсь получить электронные письма, перечисленные в нескольких полях для компаний / клиентов, которые зарегистрированы в таблицах моей базы данных, для проверки при регистрации на моем сайте с помощью электронной почты зарегистрированной компании / клиента. В настоящее время у меня есть одна таблица для компаний (tbl_companies) и одна таблица для клиентов (tbl_clients), где я храню электронные письма для обоих, которые перечислены в полях email, email1 и email2 через мою панель администратора. Как только перечисленные электронные письма сохраняются в одной из таблиц, компания / клиент регистрирует перечисленные для них электронные письма через форму company_signup, которая отправляет им электронное письмо со ссылкой для подтверждения их доступа к админ-панели их компании / клиента для изменения. их профили.
Проблема, с которой я столкнулся, заключается в том, что в настоящее время после перечисления всех электронных писем для компаний / клиентов в обеих таблицах форма company_signup видит только те электронные письма, которые находятся в поле электронной почты для tbl_companies (электронная почта) и tbl_clients (электронная почта). Я хотел бы видеть поля email, email1 и email2 от tbl_companies и tbl_clients, когда форма company_signup проверяет, проверяется ли электронная почта для регистрации и проверки.
До сих пор я пытался использовать функции SELECT *, UNION, JOIN и WHERE для SQL, чтобы попытаться объединить tbl_companies и tbl_clients вместе, используя их возможность вызывать более одного поля в двух таблицах, чтобы проверить их.
У меня есть функции, вызываемые в class.php, который включен в company_form.php, client_form.php моей админ-панели и company_signup.php моей формы регистрации.
Это код с моей страницы class.php
public function get_email_artist($email){
$this->sql = "SELECT * FROM tbl_music_artists WHERE email ='{$email}'
OR email1 ='{$email}'
OR email2 ='{$email}'";
$this->data = $this->fetch_row_assoc($this->sql);
if(!empty($this->data))
return $this->data;
else{
return false;
}
}
public function get_email_company($email){
$this->sql = "SELECT * FROM tbl_music_companies WHERE email ='{$email}'
OR email1 ='{$email}'
OR email2 ='{$email}'";
$this->data = $this->fetch_row_assoc($this->sql);
if(!empty($this->data))
return $this->data;
else{
return false;
}
}
public function get_company_email($email){
$this->sql = "SELECT * FROM login WHERE email ='{$email}'";
$this->data = $this->fetch_row_assoc($this->sql);
print_r($this->data);exit;
if(!empty($this->data)){
return $this->data;
}
else{
$sql = "(SELECT email, email1, email2 FROM tbl_music_artists WHERE email ='{$email}'
OR email1 ='{$email}'
OR email2 ='{$email}')
UNION
(SELECT email, email1, email2 FROM tbl_music_companies WHERE email ='{$email}'
OR email1 ='{$email}'
OR email2 ='{$email}')
";
$data = $this->fetch_row_assoc($sql);
if(!empty($data)){
return false;
}
return true;
}
}
Кажется, проблема в том, что вы выбираете только в первом поле электронной почты. Если вы хотите проверить все поля электронной почты, вам нужно обновить условие WHERE следующим образом:
$sql = "SELECT email, email1, email2
FROM tbl_music_artists
WHERE email ='{$com_email}' OR email1 = '{$com_email}' OR email2 = '{$com_email}'
UNION
SELECT email, email1, email2
FROM tbl_music_companies
WHERE email ='{$com_email}' OR email1 = '{$com_email}' OR email2 = '{$com_email}'
РЕДАКТИРОВАТЬ:
Эта функция:
$data = $this->get_email_artist(trim($_POST['com_email']));
Необходимо вернуть все адреса электронной почты.
Затем эта функция должна отправить по электронной почте все адреса:
$this->sendRegisterEmailCompany(trim($_POST['com_email']), ucwords($_POST['com_name']));
На данный момент он просто отправляет $ _POST [‘com_email’]. Это зависит от этой функции, но вы должны быть в состоянии передать ей массив адресов электронной почты, т.е.
$this->sendRegisterEmailCompany(array($data['email1'],$data['email2'],$data['email3']), ucwords($_POST['com_name']));
Других решений пока нет …