Seite 1 von 1

"scheinbarer" SQL-Fehler nach Update

Verfasst: 20.02.2010 20:52
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

Re: "scheinbarer" SQL-Fehler nach Update

Verfasst: 20.02.2010 21:35
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...

Re: "scheinbarer" SQL-Fehler nach Update

Verfasst: 21.02.2010 10:22
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.

Re: "scheinbarer" SQL-Fehler nach Update

Verfasst: 21.02.2010 10:33
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.