"scheinbarer" SQL-Fehler nach Update

phpBB 3.0 hat sein "End of Life" erreicht. Eine Neu-Installation wird nicht mehr unterstützt.
Gesperrt
mikaudio
Mitglied
Beiträge: 2
Registriert: 06.01.2008 15:34

"scheinbarer" SQL-Fehler nach Update

Beitrag von mikaudio »

Hallo,

hatte gerade ein Update von 3.0.0 nach 3.0.6 durchgeführt. (Komplettpaket runtergeladen und alles außer config.php, /images und /files ersetzt.) Dann noch die Datenbank mit database_update.php erneuert.
Lief alles einwandfrei und der Login, auch zum Adminbereich, geht wie gehabt. Nur wenn ich irgendein Forum aufrufen will, kommt folgende Meldung:
Allgemeiner Fehler
SQL ERROR [ mysql4 ]

Unknown column 'Array' in 'where clause' [1054]

SQL

SELECT notify_status FROM phpbb_forums_watch WHERE forum_id = 2 AND user_id = Array

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal_mysql->sql_error()

FILE: includes/functions_display.php
LINE: 1076
CALL: dbal_mysql->sql_query()

FILE: viewforum.php
LINE: 198
CALL: watch_topic_forum()


Dass "user_id = Array" gesetzt wird, liegt in "functions_display.php LINE: 1076":
$sql = "SELECT notify_status
FROM $table_sql
WHERE $where_sql = $match_id
AND user_id = $user_id";
Hab da nämlich mal die Variable "$user_id" durch "2" ersetzt, und schon wird das Forum angezeigt. Beim Aufruf eines Themas tritt der Fehler natürlch wieder auf. Es muss also irgendwo der "$user_id" der String(!) "Array" zugewiesen werden. Fragt sich nur wo? Und warum?

Bin für jeden Hinweis dankbar.

Grüße
Michael
aurora876
Ehemaliger Übersetzer
Beiträge: 1600
Registriert: 30.08.2008 20:41

Re: "scheinbarer" SQL-Fehler nach Update

Beitrag von aurora876 »

was wär, wenn du eine db-sicherung machst und dann mal die tabelle phpbb_forums_watch leerst?
der fehler scheint ja in zusammenhang zu dieser tabelle zu stehen...
There are 10 types of people in the world: Those who understand binary and those who don't. :D

Support Toolkit in Deutsch
mikaudio
Mitglied
Beiträge: 2
Registriert: 06.01.2008 15:34

Re: "scheinbarer" SQL-Fehler nach Update

Beitrag von mikaudio »

Nee, in der phpbb_forums_watch gibts nur die 3 Spalten notify_status, forum_id und user_id. Alle sind Integer und in meinem Fall gibts da nur 5 Einträge. Alles überschaubar.
In der SELECT-Anweisung müsste am Ende ...user_id = [eine Integer-Zahl] stehen. Die ganze Anweisung wird aber im PHP zusammengesetzt (bei besagter Zeile 1076, s. 2. Zitat). Wenn ich das von Hand in ...user_id = 2; ändere, werden die Foren für user 2 (in dem Fall ich) angezeigt.
Ich gehe also davon aus, dass irgendwo der PHP-Variablen $user_id (mit $-Zeichen!) fälschlicherweise der String "Array" zugewiesen wird. Also nicht SQL-Feldname user_id mit der PHP-Variablen $user_id verwechseln.
Mich würde interessieren, wo und wann die $user_id "gefüllt" wird. Dürfte ja nur einmal beim Einloggen passieren.
wolfman24
Mitglied
Beiträge: 892
Registriert: 25.09.2005 13:17

Re: "scheinbarer" SQL-Fehler nach Update

Beitrag von wolfman24 »

Es wird nicht der String 'Array' zugewiesen, sondern wahrscheinlich ein Array von Integer Werten, z.B. [2, 5, 7, 9], das sieht in der Fehlermeldung dann so aus wie beschrieben. Du solltest trotzdem mal auroras Tipp beherzigen, sonst weiß ich auch nicht weiter. Deine Vorgehensweise scheint mir korrekt gewesen zu sein. Ansonsten mal suchen, wo $user_id gefüllt wird, vielleicht siehst du da etwas.
Gesperrt

Zurück zu „[3.0.x] Installation, Update und Konvertierung“