fopen + query Abgleich mit Abfang, wenn kein Resultat

Probier mal folgenden Code aus:

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

// Tabelle erstellen
echo "<table border='1'>"; 
echo "<tr>"; 
echo "<th>E-Mail:</th>"; 
echo "<th>Kundennummer:</th>"; 
echo "</tr>";
     
while($line = fgets($fp, 1024))
{ 

   $result = mysql_query("SELECT `customerid` FROM `tl_member` WHERE `email` = '$line'") or die ("MySQL-Fehler!"); 

   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>"; 

} 

// Tabelle schliessen
echo "</table>";

// Text-Datei schliessen
fclose($fp);

Ist nur ganz ganz leicht verändert.
 
Zuletzt bearbeitet:
Finde die 10 UInterschiede.
So auf die Schnelle habe ich grad keine gefunden- Also Alice, was hast du geändert?
 
Edit:
Ich habe mich verlesen. :D

Edit:
Der Code müsste funktionieren.

Wie sieht denn die Text-Datei aus?

Edit:
Ich habe den Code noch einmal angepasst.
 
Zuletzt bearbeitet:
Ich habe halt den mysql_query etwas verändert.
Ich sag das nur ungern, alice. Aber du hast das SQL-Statement soweit verschlechtert das es garantiert auf einen Fehler läuft. Auch ansonsten sehe ich ausser einer Fehlerasugabe über 'die' keinerlei verbesserung des Codes. Auf alle Fälle nix das das Problem beheben würde.
Strings müssen immer noch in ' gefasst werden.
SQL:
-- du hast
 WHERE `email` = $line

-- das sollte aber mindestens so aussehen
 WHERE `email` = '$line'

--noch besser
 WHERE `email` = '{$line}'

Jedoch wäre es Hilfreich mal eine Beispiel Text-Datei zu sehen.
Damit hast du Recht. Das könnte wirklich nicht schaden
 
Zuletzt bearbeitet von einem Moderator:
PHP:
$result = mysql_query("SELECT `customerid` FROM `tl_member` WHERE `email` = '$line'");

Für mich sieht dieser Code nicht richtig aus. Ich bin bei PHP nicht so lange dabei wie du, aber das sieht einfach nicht richtig aus.

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

Naja, vielleicht irre ich mich ja auch nur.

PHP:
$result = mysql_query(
                      "
                       SELECT  `customerid` 
                       FROM    `tl_member` 
                       WHERE   `email` = '".$line."'
                       /* Was ist das?                       
                       ;
                       */
                      "
                     );

Jetzt mal absichtlich so formatiert.
 
PHP:
$result = mysql_query("SELECT `customerid` FROM `tl_member` WHERE `email` = '$line'");

Für mich sieht dieser Code nicht richtig aus. Ich bin bei PHP nicht so lange dabei wie du, aber das sieht einfach nicht richtig aus.

PHP:
$result = mysql_query("SELECT `customerid` FROM `tl_member` WHERE `email` = '".$line."';");
Ist beides genau dasselbe und richtig. Am besten studierst du mal diese Seite der PHP-Doku:
Strings.




Naja, vielleicht irre ich mich ja auch nur.

PHP:
$result = mysql_query(
                      "
                       SELECT  `customerid` 
                       FROM    `tl_member` 
                       WHERE   `email` = '".$line."'
                       /* Was ist das?                       
                       ;
                       */
                      "
                     );

Jetzt mal absichtlich so formatiert.
Ein sauberer SQL-Befehel endet mit einem ;. Weil du kannst auf eine DB auch mehrere Befehle senden. Da man aber mit mysql_query() nur einen Befehl sendet wird es meistens weggelassen, was aber eigentlich unsauber ist.
 
Zurück