YourWBB


yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » mysql error number: 1064 » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag 4.663 Views | | Thema zu Favoriten hinzufügen

Neues Thema erstellen Antwort erstellen

Zum Ende der Seite springen mysql error number: 1064
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Eiriksun
Mitglied


Dabei seit: 09.11.10
Beiträge: 15
Forenversion: 2.3

Geschockt mysql error number: 1064 Antworten Zitieren Editieren Melden       UP

Hallo @ all,
ich habe jetzt schon einige Seiten hier durchgewüselt aber nichts zu meinem Problem hier finden können.

Ich mußte ein Backup einspielen und wenn ich jetzt einige Benutzer in der Acp bearbeiten möchte bekomme ich folgende Meldung.



Zitat:
SQL-DATABASE ERROR Database error in WoltLab Burning Board (2.3.6): Invalid SQL: SELECT * FROM bb2_avatars WHERE (userid = 0 AND groupid IN (0,,2,14) AND needposts <= '2709') OR userid = '9' ORDER BY userid DESC mysql error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2,14) AND needposts <= '2709') OR userid = '9' ORDER BY userid DESC' at line 1 mysql error number: 1064 mysql version: 5.1.54-0.dotdeb.0-log php version: 5.2.16-0.dotdeb.0 Date: 07.02.2012 @ 21:16 Script: /wbb/acp/users.php?action=edit&userid=9&sid=

nun mein englisch ist nicht das aller beste und irgend wie verstehe ich das auch, nur was soll ich jetzt machen.
Ist da jemand der mir da helfen kann.

G
Eiriksun

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Eiriksun: 07.02.12 21:36.

07.02.12 21:35 Eiriksun ist offline E-Mail WWW Finden Als Freund hinzufügen
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

Antworten Zitieren Editieren Melden       UP

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 Steinadler ist offline Finden Als Freund hinzufügen
Eiriksun
Mitglied


Dabei seit: 09.11.10
Beiträge: 15
Forenversion: 2.3

Themenstarter Thema begonnen von Eiriksun
Antworten Zitieren Editieren Melden       UP

ok nur wo muß ich denn suchen in acp/user.php finde ich nichts
08.02.12 00:53 Eiriksun ist offline E-Mail WWW Finden Als Freund hinzufügen
Pigsel
Mitglied


images/avatars/avatar-5749.gif

Dabei seit: 05.09.11
Beiträge: 774
Fähigkeiten: WBB Lite 1 Fortgeschritten
Forenversion: Lite 1.0

Antworten Zitieren Editieren Melden       UP

FROM bb2_avatars WHERE (userid = 0 AND groupid IN (0,,2,14)

versuch es mal in der Tabelle avatars

__________________
Ein Leben ohne CodeBug's ist ein Leben im Paradies

08.02.12 01:21 Pigsel ist offline E-Mail Finden Als Freund hinzufügen
Eiriksun
Mitglied


Dabei seit: 09.11.10
Beiträge: 15
Forenversion: 2.3

Themenstarter Thema begonnen von Eiriksun
Antworten Zitieren Editieren Melden       UP

mit phpMyAdmin oder wie, sorry das ich so dusselig frage aber ich komme so nicht weiter
08.02.12 01:53 Eiriksun ist offline E-Mail WWW Finden Als Freund hinzufügen
Schrimm
Banned


Dabei seit: 21.08.11
Beiträge: 700

Antworten Zitieren Editieren Melden       UP

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 Schrimm ist offline Finden Als Freund hinzufügen
Eiriksun
Mitglied


Dabei seit: 09.11.10
Beiträge: 15
Forenversion: 2.3

Themenstarter Thema begonnen von Eiriksun
Antworten Zitieren Editieren Melden       UP

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:
zip users.zip (18 KB, 8 mal heruntergeladen)
08.02.12 14:00 Eiriksun ist offline E-Mail WWW Finden Als Freund hinzufügen
Schrimm
Banned


Dabei seit: 21.08.11
Beiträge: 700

Antworten Zitieren Editieren Melden       UP

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 Schrimm ist offline Finden Als Freund hinzufügen
Baumstruktur | Brettstruktur
Gehe zu:

Neues Thema erstellen Antwort erstellen

yourWBB » yourWBB Misc * » Das Proggen » MySQL und PHP » mysql error number: 1064