mysql error number: 1064 |
Steinadler
Alternativ Mitglied
Dabei seit: 02.09.08
Beiträge: 212
Fähigkeiten: WBB2 Fortgeschritten; WBB Lite 1 Profi Forenversion: 2.3; Lite 1.0
|
|
Da ist ein Komma zuviel:
php: |
1:
|
groupid IN (0,,2,14) |
|
so sollte es sein:
php: |
1:
|
groupid IN (0,2,14) |
|
|
|
07.02.12 22:35 |
Finden
Als Freund hinzufügen
|
|
Eiriksun
Mitglied
Dabei seit: 09.11.10
Beiträge: 15
Forenversion: 2.3
Themenstarter
|
|
mit phpMyAdmin oder wie, sorry das ich so dusselig frage aber ich komme so nicht weiter
|
|
08.02.12 01:53 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Schrimm
Banned
Dabei seit: 21.08.11
Beiträge: 700
|
|
Nein, das Problem liegt in der users.php.
Die Suchstelle lautet "AND groupid IN (" und dahinter befinden sich wahrscheinlich Variablen anstatt der Zahlen.
Alternativ kannst du auch einfach mal nach ",," suchen, also zwei Beistrichen hinteinander.
Wenn du eine solche Stelle besitzt, löscht du einfach einen Beistrich.
Solltest du das Problem immer noch nicht finden, dann hänge die users.php im ZIP-Archiv an.
|
|
08.02.12 03:02 |
Finden
Als Freund hinzufügen
|
|
Eiriksun
Mitglied
Dabei seit: 09.11.10
Beiträge: 15
Forenversion: 2.3
Themenstarter
|
|
So ich habe mir die Users.php angeschaut konnte aber keine ",," finden. Ich habe jetzt mal die Users.php aus dem Acp Verzeichnis als zip angehangen.
Dateianhang: |
users.zip (18 KB, 8 mal heruntergeladen)
|
|
|
08.02.12 14:00 |
E-Mail
WWW
Finden
Als Freund hinzufügen
|
|
Schrimm
Banned
Dabei seit: 21.08.11
Beiträge: 700
|
|
Die Datei ist in Ordnung.
Jedoch könnte es sein, dass bei der Einspielung des Backups ein Fehler aufgetreten ist.
Bei gewissen Benutzern könnte sich (wbb2) in der user2groups-Tabelle Leerspalten(eine Zeile mit einer leeren Spalte) befinden.
Dadurch könnte es passieren, dass das "Gruppenid-Array"($user['groupids']), eines Users, beispielweise folgendermaßen befüllt wird:
php: |
1:
2:
3:
|
$user['groupids'][0] =
$user['groupids'][1] = 2
$user['groupids'][2] = 14 |
|
Wie man erkennt, befindet sich, im Array, an der Position 0 kein Eintrag.
Nun wird die Funktion implode() auf das Array angwandt, die einen Beistrich zwischen jedes Element hinzufügt und einen String daraus macht.
Der String sehe nun so aus:
,2,14
Der Beistrich vor der zwei ist jedoch für den weiteren Ablauf schädlich.
Mit dem ganzen Befehl der Zeile dann wie folgt:
...userid = 0 AND groupid IN (0,,2,14) AND...
Dieser Befehl ist aber ungültig und das besagt auch die Fehlermeldung.
Fehlerbehebung
Variante 1:
Du müsstest die user2groups-Tabelle anschauen und überprüfen, ob dort Einträge mit "Nulleinträgen" vorhanden sind und die Userid mit der ID des Benutzer überprüfen, bei dem der Fehler auftritt.
Die Nulleinträge sind wahrscheinlich die Fehlerquelle.
Variante 2:
Einen MySQL-Befehl ausführen, der dir automatisch diese "falschen Einträge" löscht.
Variante 3:
Du müsstest eine Sicherungsabfrage bei der implode()-Funktion oder vorher einbauen, die dir diese "Leerspalten" ignoriert bzw. eine Fehlerbehebung vornimmt.
Stichwort: Trinitäts-Operator/Ternary Operator (Kurzform der If/else-Bedingung)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Schrimm: 11.02.12 18:30.
|
|
11.02.12 18:27 |
Finden
Als Freund hinzufügen
|
|
|