Zum Inhalt springen

Änderungen an einer MySQL-DB übr PHP (Problem)


BigDaddyXD

Empfohlene Beiträge

Hallo zusammen,

ich habe in einem meiner Serverscripte ein Problem. Sinn des Scriptes ist es,

Accounts mit derselben "letzten IP" einem "mainlogin" zuzuweisen, sodass

man alle Accounts eines Benutzers zuordnen kann. Soweit so, eigentlich, einfach.

Dazu nutze ich folgendes Script:

$query = "SELECT login, lastIP, mainlogin FROM accounts WHERE (mainlogin='' OR mainlogin=login) AND lastIP!='' ORDER BY lastIP DESC, login DESC";

$result = mysql_query($query) or die(mysql_error());
$llastIP = "";
$lastlogin = "";
$numedits=0;
while ($data = mysql_fetch_array($result, MYSQL_ASSOC)) {
$curip = $data['lastIP'];
$curlogin = $data['login'];
$curmainlogin = $data['mainlogin'];

$query2 = "SELECT login FROM accounts WHERE lastIP='$curip' ORDER BY login DESC";

$result2 = mysql_query($query2) or die(mysql_error());
$numaccswithip = mysql_num_rows($result2);

if ($numaccswithip==1) {
if ($curmainlogin=="") {
echo $curlogin." ".$curmainlogin." ".$curip."<br>";
}
$query1 = "UPDATE accounts SET mainlogin='".$curlogin."' WHERE login='".$curlogin."'";
$result1 = mysql_query($query1) or die(mysql_error());
}
else {
$data1 = mysql_fetch_array($result2, MYSQL_ASSOC);
$newmainlogin = $data1['login'];
$query1 = "UPDATE accounts SET mainlogin='".$newmainlogin."' WHERE lastIP='".$curip."'";
$result1 = mysql_query($query1) or die(mysql_error());
}
$llastIP = $curip;
$lastlogin = $curlogin;
$numedits=$numedits+1;
}

echo"Zusammengehoerige Accounts wurden markiert... $numedits<br>";[/PHP]

Dieses Script hat auch immer prima funktioniert, doch seit einiger Zeit,

werden NEU angemeldete Accounts von dem Script nichtmehr behandelt!

Gibt es irgendwie ein maximum an Datensätzen der über PHP oder eine SQL-

Anforderung bearbeitet werden kann? Ich kann mit schlucht und ergreifend

nicht erklären warum knapp über 800 Accounts damit korrekt bearbeitet

werden, aber alle neu dazukommenden Accounts einfach unbeachtet bleiben...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Stehen die neuen Accounts bereits in der Datenbank?

Wie sieht ein Datensatz aus, der funktioniert?

Wie sieht ein Datensatz aus, der nicht funktioniert?

Gibt es Fehlermeldungen?

Wurde die PHP Version gewechselt?

Wird eine andere Server Applikation verwendet?

Bitte einfach mal genauere Informationen schreiben

EDIT:

Übrigens brauchst du in der Zeile

while ($data = mysql_fetch_array($result, MYSQL_ASSOC)) {

das MYSQL_ASSOC nicht zu schreiben. mysql_fetch_array kann einen Zugriff via Indizes und Assiziationen verarbeiten, da MYSQL_BOTH als default definiert ist.

MYSQL_BOTH: Funktionsergebnis ist ein Array, das die Elemente des Ergebnisdatensatzes sowohl assoziativ als auch numerisch indiziert enthält. Dies ist der Default-Wert.
Bearbeitet von Shadowman
Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt keine Fehlermelung, keinen Fehler oder sonstwas. Das Script läuft

durch wie imemr schon, und die Accountzuordnung wird auch aktualisiert,

aber nur bis zu einer bestimmten Menge an Datensätzen.

Obwohl das Script korrekt ist, werden neuere Datensätze einfach nicht behandelt...

Insgesammt umfasst die Datenbank an die 3000 Accounts, wovon aber ca

1000 keine "lastIP" haben und damit von der Abfrage ausgeschlossen sind.

Auf mich macht es den Eindruck dass die Verarbeitung der Datensätze einfach an einem besstimmten Punkt aufhört, als gäbe es einen Maximalwert, sagen wir mal "höchstens 1500 Datensätze pro Abfrage dürfen aktualisiert werden", was aber natürlich Blödsinn wäre.

Und nochmal anders formuliert, damit es auch auf jeden Fall verstanden werden kann ;) ...

Als ich sagen wir mal noch 1500 Accounts hatte, hat das Script allen Datensätzen ihren mainlogin zugewiesen, ganz zuverlässing und ohne Ausnahme.

Irgendwann hat das Script neuere Accounts aber einfach "ignoriert".

Lösche ich jetzt z.b. aus einem "alten" Account das mainlogin raus, und

habe gleichzeitig auchnoch einen "neuen" Account, der auch noch keinen

hat und lasse das Script dann laufen, dann bekomtm der alte Account

wieder ein mainlogin zugeordnet, der neue aber nicht!

Sehr komische Sache, wie gesagt, hat irgendwie was von einem erreichten

Limit, aber das kann ich fast net glauben...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okay, ich konnte das Problem lösen.

Wie gesagt, es GIBT keine Fehlermeldung, und die Abfragen sind auch 100% korrekt.

Das Problem lag in der Tabellendefinition. mainlogin hatte die Erlaubnis "null" zu sein.

Nachdem ich "null" verboten habe läuft es nun bei ALLEN Accounts...

Merkwürdig trotzdem warum es bei so vielen Accounts auch mit null

geklappt hat, aber dann plötzlich nichtmehr...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...