Lewbie: Wo ist der Fehler?

Hi,

ich möchte in  einer Logdatei den Updateprozess überwachen.
Aber das Script trägt mir alle Datensätze ein, ich wollte nur die, die wirklich geändert werden.

  
for($count = $zahl; $count < $ablauf+1; $count++)  
  {  
$query_update="update ...";  
$result_update=mysql_query($query_update);  
if ($result_update==FALSE)  
	  {  
	die(mysql_error($db));  
	  }  
  
if(mysql_affected_rows() > 0) {  
// In Kontrolldatei eintragen  
  $datei = fopen("log.txt","a");  
  fwrite($datei, "Text...\n");  
  fclose($datei);  
}  
  } // end for schleife  

Normalerweise solten doch so nur die eingetragen werden, bei denen überhaupt die where-Bedingung der update-query erfüllt ist und auch daraus resultierend tatsächlich eine Datenänderung entsteht, oder?

Gruß, Lew

  1. Aber das Script trägt mir alle Datensätze ein

    Welche alle? Und wo meinst du das eintragen? In die Datei oder die Datenbank?
    Ein UPDATE gibt doch nichts zurück?

    Ein Script aufs wesentliche kürzen ist ja schon ne gute Hilfe für den Leser. Aber wenn man dann gar alles rauskürzt oder mit ... ersetzt, musst du fast nen Preis ausschreiben, für denjenigen der rausfindet was da passiert oder passieren soll.

    1. Aber das Script trägt mir alle Datensätze ein

      In die Logdatei.

      Welche alle? Und wo meinst du das eintragen? In die Datei oder die Datenbank?
      Ein UPDATE gibt doch nichts zurück?

      Doch, sicher. Die betroffenen datensätze sollte ein update-statement schon zurückgeben.

      Grüße, Lew

      1. Doch, sicher. Die betroffenen datensätze sollte ein update-statement schon zurückgeben.

        Die Anzahl schon, aber doch nicht die Daten selber. Das wär mir ehrlich gesagt neu. Ich könnte zwar nicht sagen dass es nicht so ist, aber ich wüsste nicht wie man die bekommen kann. Vor allem wärs dann schon ziemlich unperformant wenn diese Datensätze vorsichtshalber mal alle zum Programm übertragen werden.

        Was genau macht denn dein Programm da wo es die Datensätze schreibt? Laut Beispiel schreibt es ja nur einmalig "Text...\n" rein, sofern Datensätze aktualisiert wurden.

        1. Die Anzahl schon,

          Mehr wollte ich auch nicht. Die DFaten für die Log-Datei habe ich ja aus der Query schon.

          Was genau macht denn dein Programm da wo es die Datensätze schreibt? Laut Beispiel schreibt es ja nur einmalig "Text...\n" rein, sofern Datensätze aktualisiert wurden.

          Siehe Posting von vor ca. 1 Minute von mir.
          Eben liefs nicht, jetzt läufts tadellos. Ich muss mich vorhin versehen ahben. Sorry und danke Für Deione Hilfe.

          Grüße. Lew

  2. Hi Lewbie,

    wieviele Datensätze zeigt dir den dein MySQL-Interface an, wenn du den Query wegschickst? Möglicherweise stimmt die Anzahl ja, nur dein Query ist halt nicht korrekt aufgebaut!? Des weiteren würde ich "fclose($datei);"
    nicht ständig in der for-schleife benutzen, da du ständig Öffnen-/Schliessen-Prozesse ausführst! Schliess die Datei erst nach Ablauf der for-Schleife!

    Hi,

    ich möchte in  einer Logdatei den Updateprozess überwachen.
    Aber das Script trägt mir alle Datensätze ein, ich wollte nur die, die wirklich geändert werden.

    for($count = $zahl; $count < $ablauf+1; $count++)
      {
    $query_update="update ...";
    $result_update=mysql_query($query_update);
    if ($result_update==FALSE)
      {
    die(mysql_error($db));
      }

    if(mysql_affected_rows() > 0) {
    // In Kontrolldatei eintragen
      $datei = fopen("log.txt","a");
      fwrite($datei, "Text...\n");
      fclose($datei);
    }
      } // end for schleife

    
    >   
    > Normalerweise solten doch so nur die eingetragen werden, bei denen überhaupt die where-Bedingung der update-query erfüllt ist und auch daraus resultierend tatsächlich eine Datenänderung entsteht, oder?  
    >   
    > Gruß, Lew 
    
    1. Des weiteren würde ich "fclose($datei);"
      nicht ständig in der for-schleife benutzen, da du ständig Öffnen-/Schliessen-Prozesse ausführst! Schliess die Datei erst nach Ablauf der for-Schleife!

      Guter Tip. Dank Dir!

      Lew

      P.S: Die Datei enthält keinen Fehler, ich weiß selber nicht genau, was ich vorhin als fehlermeldung bekam. Jedenfalls läuft die Datei jetzt exakt, wie erwartet.

      Danke für eure Unterstützung.