fopen + query Abgleich mit Abfang, wenn kein Resultat

adalo

Grünschnabel
Hallo Leute,

ich will anhand einer Textdatei, in der E-Mail-Adressen zeilenweise stehen, aus der MySQL-Datenbank aus der Kundentabelle die Kundennummern rausziehen. Eigentlich geht das auch wunderbar mit dem unteren Code, wenn allerdings in der Datei eine E-Mail vorhanden ist, die nicht in der Kundentabelle vorhanden ist, läuft es nicht.

Habt ihr eine Idee, wie ich das abfangen kann?

PHP:
$fp = @fopen("datei.txt", "r") or die ("Kann Datei nicht lesen.");

echo "<table border='1'>
	<tr>
	  <th>email</th>
	  <th>Kundennummer</th>
	</tr>";
	

while($line = fgets($fp, 1024)){

$result = mysql_query("SELECT `kundennummer` FROM `kundentabelle` WHERE `email` = '".$line."';");

echo "<tr>";
echo "<td>" . $line . "</td>";
echo '<td>';
          $row = mysql_fetch_row($result);
          echo $row[0];
echo '</td>';
echo "</tr>";

}

fclose($fp);

echo "</table>";
 
Du kannst einfach mit mysql_num_rows($result) zuerst prüfen ob das SQL auch ein Resultat liefert

PHP:
$result = mysql_query(...);
if(mysql_num_rows($result) < 0){
    //TODO: Hier die Echo-Ausgabe
}
 
danke, an euch beiden.

leider ist mir aufgefallen, dass die Abfrage nur bei reinen Zahlen geht. Wenn ich in Textdatei und der WHERE nach ID suche, geht es. Mit E-Mail-Adressen nicht :(
 
Er listet in der Tabelle alle E-Mails aus der eingelesenen Datei auf. Aber in der Kundennummer Spalte führt er nur die letzte Zeile mit der Kundennummer auf.

Das ist mit erst jetzt bewusst geworden, sorry. Wie gesagt, wenn ich nach reinen Zahlen suche, geht die Abfrage problemlos.
 
item: Zeig mal dein aktueller Code

item: Haben dei EMail-Zeilen keine foldende Leerezichen oder dergleichen? Mach doch sicherheitshalber mal noch ein trim($line)

item: Ist das feld email in der kundentabelle unique?
 
es gibt keine leerzeichen. ich habe das auch mal mit nur 2 emails in der datei geprüft, wobei auch beide definitiv in der DB-Tabelle stehen.

email feld ist unique

hier der aktuelle code:

PHP:
$fp = @fopen("emails.txt", "r") or die ("Kann Datei nicht lesen.");

echo "
<table border='1'>
    <tr>
      <th>email</th>
      <th>Kundennummer</th>
    </tr>";
    
while($line = fgets($fp, 1024)){

	$result = mysql_query("SELECT `customerid` FROM `tl_member` WHERE `email` = '".$line."';");

	echo "<tr>";
	echo "<td>" . $line . "</td>";
	echo '<td>';
		if(mysql_num_rows($result) > 0){
			  $row = mysql_fetch_row($result);
			  echo $row[0];
		}
		else {
			echo 'keine Kundenemail';
		}
	echo '</td>';
	echo "</tr>";

}

fclose($fp);

echo "</table>";
 
Zurück