Jarimori: PHP/MySQL: Syntax-Fehler

Beitrag lesen

Ich versteh nicht, warum die SQL-Query mit der expliziten Eingabe funktioniert und mit der Variable nicht, obwohl diese Variable genau mit dieser Zahl (also der expliziten Eingabe) übereinstimmt! Da muss es doch eine andere Formatierung geben, dass auch das die Query mit der Variable funktioniert - zum VERZWEIFELN!!

Hallo,

in diesem Beitrag erwähnst Du, dass es zu folgenden Fehlermeldungen kommt:

Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource in excel_test.php on line 30
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in excel_test.php on line 47

$sql_query = "SELECT KZ, NAME, VORNAME, GESCHL, JG, SPRINT, MITTEL, k_vname, k_name, k_tel, k_mail FROM MELDUNG WHERE AKTIV='1' AND KZ = '".$meeting_id."' AND LETZTE_MELDUNG=".date(Y)." AND SCHULE='" . $schul_id . "' ORDER BY NAME";

$result = mysql_query($sql_query);

// In der folgenden Zeile gehst Du davon aus, dass mysql_query erfolgreich war. Die Fehlerbehandlung fehlt.

if (!$result) {
      // Huch, ein Fehler ist aufgetreten. Diesen müssen wir behandeln
      // ein einfaches die(mysql_error), wie im [link:http://www.php.net/manual/de/function.mysql-query.php@title=Handbuchbeispiel]
      // ist keine wirkliche Fehlerbehandlung
      // Fürs erste reicht hier allerdings ein
      $out = mysql_error();
      // das Du zum Schluss hübsch ausgeben kannst.
  }
  else {
      // Gültige Ressourcekennung da, Ergebnis kann verarbeitet werden.

$fields_cnt = mysql_num_fields($result);
    $schema_insert = '';
    for ($i = 0; $i < $fields_cnt; $i++) {
        $l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed,

// Was soll hier stripslashes bewirken?

stripslashes(mysql_field_name($result, $i))) . $csv_enclosed;
      // [...]


>   
> Fürs weitere Vorgehen empfehle ich Dir folgenden Ansatz, das altbewährte EVA-Prinzip:  
>   
> Eingabe:  
> Stelle Query zusammen  
> Setze Query an Datenbank ab, behandle auftretende Fehler angemessen.  
> Wenn Query erfolgreich abgesetzt, lese Daten in Array ein. Gebe danach die MySQL-Ressource frei.  
>   
> Verarbeitung:  
> Bereite Daten für CSV-Ausgabe auf.  
>   
> Ausgabe:  
> Gebe Daten aus :-)  
>   
> Sicher benötigt dieser Ansatz mehr Speicher, ich gehe im Moment aber davon aus, dass dies kein Problem darstellt.  
> Du vermischst Eingabe und Verarbeitung. Trenne diese. Verwende Funktionen. Kommentiere Deinen Code.  
>   
>   
> Freundliche Grüße  
>   
> Vinzenz