Wo ist der Fehler?
Lewbie
- php
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
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.
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
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.
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
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
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.