Mobile

SQL eMails aus zwei Feldern extrahieren

Überkinger

Lieutenant
Registriert
Juli 2010
Beiträge
600
Ich ziehe für die Verarbeitung innerhalb einer Schleife eMail-Adressen aus der Datenbank und verarbeite sie in zwei While-Schleifen. Jetzt möchte ich beide Schleifen zu einer kürzen. Wie mache ich das am besten?

PHP:
$select_a = "SELECT number, forename , nickname , email1, SUBSTRING_INDEX(email1,'@',-1) AS domain from table WHERE reg_a = 1 AND groups IN (91,93,95,97,99) order by domain ASC;";
$result_a = mysql_query($select_a,$link_db);

	while ($row = mysql_fetch_array($result_a)) {
	echo $row["email1"];
	}

$select_b = "SELECT number, forename , nickname , email2, SUBSTRING_INDEX(email2,'@',-1) AS domain from table WHERE reg_b = 1 AND groups IN (91,93,95,97,99) order by domain ASC;";
$result_b = mysql_query($select_b,$link_db);

	while ($row = mysql_fetch_array($result_b)) {
	echo $row["email2"];
	}

Beide Abfragen in ein neue Variable schreiben? Also etwa so:

$mails = $row["email1"];
$mails .= $row["email2"];

Oder geht das einfacher innerhalb des SELECT-Statements?
 
Wenn ich das nich falsch sehe, wieso machst du nicht einfach ein SQL Query draus?

Code:
SELECT number, forename , nickname , email2, SUBSTRING_INDEX(email2,'@',-1) AS domain FROM table
WHERE (reg_a = 1 OR reg_b = 1) AND groups IN (91,93,95,97,99)
ORDER BY domain ASC
 
bu1137 schrieb:
Wenn ich das nich falsch sehe, wieso machst du nicht einfach ein SQL Query draus?

Code:
SELECT number, forename , nickname , email2, SUBSTRING_INDEX(email2,'@',-1) AS domain FROM table
WHERE (reg_a = 1 OR reg_b = 1) AND groups IN (91,93,95,97,99)
ORDER BY domain ASC


Hallo,

da fehlt jetzt aber die eMail1 in den Query? Müsste dann heißen:

Code:
SELECT number, forename , nickname , email1 , email2, SUBSTRING_INDEX(email1,'@',-1) AS domain_a, SUBSTRING_INDEX(email2,'@',-1) AS domain_b FROM table
WHERE (reg_a = 1 OR reg_b = 1) AND groups IN (91,93,95,97,99)
ORDER BY domain_a, domain_b ASC

Danach kann ich die Variable bauen bestehend aus $row["email1"] und $row["email2"] ?
 
Da die Felder jetzt vorhanden sind, kannst du das natürlich so machen.
 
Darlis schrieb:
Da die Felder jetzt vorhanden sind, kannst du das natürlich so machen.

Ok. Ich bin jetzt draufgekommen, dass ich ein neues Array bauen muss, mit allen eMail-Adressen. Wie stelle ich das an? Die Verarbeitung soll für jede einzelne Adresse stattfinden, nicht für alle auf einmal.

Wie baue ich aus den beiden Selektionen ein neues Array?
 
Zuletzt bearbeitet:
Die Grundlagen von PHP lernen? 1 minute googlen?
Aus dem Stegreif müsste das so in der Art gehen:
Code:
$mailArray = array();
for(...){
  ...
  $mailArray[] = $row["email1"];
  $mailArray[] = $row["email2"];
}
 
Zurück
Oben