Seite 1 von 1

Codeanpassung für mysql 5 - wer kann helfen?!

Verfasst: 24.02.2007 14:39
von Vanessa
hallo!

seit der umstellung auf mysql 5.0.24 bekomme ich - wie schon andere vor mir - folgende fehler angezeigt:

beim posten und löschen von posts:
Error geting users post stat

DEBUG MODE

SQL Error : 1054 Unknown column 'g.group_id' in 'on clause'

SELECT ug.user_id, g.group_id as g_id, u.user_posts, g.group_count, g.group_count_max FROM phpbb_geogroups g, phpbb_geousers u LEFT JOIN phpbb_geouser_group ug ON g.group_id=ug.group_id AND ug.user_id=3 WHERE u.user_id=3 AND g.group_single_user=0 AND g.group_count_enable=1 AND g.group_moderator<>3

Line : 594
File : functions_post.php
beim registrieren neuer user:
Error geting users post stat

DEBUG MODE

SQL Error : 1054 Unknown column 'g.group_id' in 'on clause'

SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM phpbb_geogroups g, phpbb_geousers u LEFT JOIN phpbb_geouser_group ug ON g.group_id=ug.group_id AND ug.user_id=298 WHERE u.user_id=298 AND ug.user_id is NULL AND g.group_count=0 AND g.group_single_user=0 AND g.group_moderator<>298

Line : 904
File : usercp_register.php
wer kann mir bitte helfen, folgenden code mysql 5 kompatibel zu machen? ich weiß leider einfach zu wenig übr mysql als dass ich das alleine schaffen würde...

funktions_post.php

Code: Alles auswählen

$sql = "SELECT ug.user_id, g.group_id as g_id, u.user_posts, g.group_count, g.group_count_max FROM " . GROUPS_TABLE . " g, ".USERS_TABLE." u
                LEFT JOIN ". USER_GROUP_TABLE." ug ON g.group_id=ug.group_id AND ug.user_id=$user_id
                WHERE u.user_id=$user_id
                AND g.group_single_user=0
                AND g.group_count_enable=1
                AND g.group_moderator<>$user_id";

usercp_register.php

Code: Alles auswählen

$sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM " . GROUPS_TABLE . " g, ".USERS_TABLE." u
      LEFT JOIN ". USER_GROUP_TABLE." ug ON g.group_id=ug.group_id AND ug.user_id=$user_id
      WHERE u.user_id=$user_id
         AND ug.user_id is NULL
         AND g.group_count=0
         AND g.group_single_user=0
         AND g.group_moderator<>$user_id";

außerdem bekommen neue user keine aktivierungsmail mehr! hängt das mit obigem "problem" zusammen? und läuft es nach der änderung wieder automatisch?

ich wäre wirklich dankbar, wenn sich jemand die zeit nehmen würde, mir hiermit zu helfen...

schon mal ein großes danke für eure mühen!


gruß, vanessa.

Verfasst: 24.02.2007 15:32
von Miriam
Um dieses MySQL5 - Feature zu umgehen, musst Du alle Kommata, die zwischen den Tabellennamen vor LEFT JOIN stehen gegen INNER JOIN austauschen.
Das Problem besteht nur bei JOIN ... ON.

Bsp.:

geht nicht:

Code: Alles auswählen

SELECT * FROM phpbb_users u, phpbb_groups g LEFT JOIN phpbb_posts p ON p.poster_id = u.user_id; 
geht:

Code: Alles auswählen

SELECT * FROM phpbb_users u INNER JOIN  phpbb_groups g LEFT JOIN phpbb_posts p ON p.poster_id = u.user_id;
Siehe auch hier --> Klick


P.S.: Dieser Code ergibt natürlich kein sinnvolles Ergebnis.

Verfasst: 24.02.2007 15:44
von Vanessa
nach dem beispiel hab ich auhc versucht mich zu orientieren, aber ich verstehe das leider nicht.

was heißt "kein sinnvolles ergebnis"?

ich brauch eine funktionierende lösung....

Verfasst: 24.02.2007 15:47
von Miriam
MEIN CODE, den ich hier als Beispiel gepostet habe, bringt kein sinnvolles Ergebnis.

Natürlich brauchst Du eine funktionierende Lösung.... Was denn sonst?

Verfasst: 24.02.2007 15:48
von Vanessa
und genau darum habe ich gebeten... ein beispiel bringt mir leider nicht viel. hab schon versucht das verlinkte beispiel mit meinem code zu vergleichen und mich daran zu orientieren, leider krieg ichs nicht hin :-?

Verfasst: 24.02.2007 15:55
von Miriam
Okay, eine Änderung baue ich Dir vor... den Rest musst Du dann mal selbst probieren.

finde in usercp_register.php:

Code: Alles auswählen

$sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM " . GROUPS_TABLE . " g, ".USERS_TABLE." u
      LEFT JOIN ". USER_GROUP_TABLE." ug ON g.group_id=ug.group_id AND ug.user_id=$user_id
      WHERE u.user_id=$user_id
         AND ug.user_id is NULL
         AND g.group_count=0
         AND g.group_single_user=0
         AND g.group_moderator<>$user_id";
tausche aus gegen:

Code: Alles auswählen

$sql = "SELECT ug.user_id, g.group_id as g_id, g.group_name , u.user_posts, g.group_count FROM " . GROUPS_TABLE . " g INNER JOIN ".USERS_TABLE." u
      LEFT JOIN ". USER_GROUP_TABLE." ug ON g.group_id=ug.group_id AND ug.user_id=$user_id
      WHERE u.user_id=$user_id
         AND ug.user_id is NULL
         AND g.group_count=0
         AND g.group_single_user=0
         AND g.group_moderator<>$user_id";

Verfasst: 24.02.2007 16:09
von Vanessa
hm. ok, danke. dein code sieht einfacher aus als dieser hier:

http://www.phpbb.de/viewtopic.php?p=678546#678546

ich mit dem beispiel hatte ich das versucht...



melde mich später um zu berichten obs funktioniert hat :wink:

Verfasst: 24.02.2007 16:37
von Vanessa
miriam, ich danke dir!

ich hab mir dein und das andere beispiel nochmal angesehen... das andere war viel komplizierter, irgendwie verschachtelt... kein wunder dass ich es nicht verstanden habe... :roll: :wink:

Verfasst: 24.02.2007 16:46
von Miriam
Na bitte.... Wieder was erledigt. :wink: