Seite 1 von 1

Problem mit Datenbankabfrage (unknown column)

Verfasst: 29.10.2015 15:17
von mps
Hallo zusammen,

erstmal: Ich hoffe es ist ok, wenn ich hier für jedes Fehlerchen einen neuen Thread auf machen, sofern es sich nicht um das gleiche oder ähnliche Thema handelt. Wenn nicht, bitte mir ein PN schicken - ich versuche mich dann zu bessern :D )

Nun zu meinem Problem: Ich bekomme von PHPBB folgenden allgemeinen Fehler angezeigt:
SQL ERROR [ mysqli ]

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

SQL

SELECT bereich FROM phpbb_parkplan_themen WHERE bereich_id='5'

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbb\db\driver\driver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbb\db\driver\mysqli->sql_query()

FILE: [ROOT]/parkplan.php
LINE: 351
CALL: phpbb\db\driver\factory->sql_query()
Daraus schließe ich jetzt, dass die Spalte "bereich_id" nicht existiert. Das sehe ich jetzt aber anders. Hier mal ein Screenshot aus phpmyadmin:

[ externes Bild ]

Die Tabelle ist gleich, die Datenbank ist sowieso korrekt (sonst würde vorher auch schon was nicht geklappt haben) und die Spalte ist auch vorhanden. Wie kann das also sein? Ist irgendwas in meinem Code falsch?

Code: Alles auswählen

case('info'): //bestimmte Attraktion anzeigen

$result = $db->sql_query("SELECT * FROM " . PARKPLAN_TABLE . " WHERE id='".$id."'");

while($row = $db->sql_fetchrow($result))
{

    $resultbereich = $db->sql_query("SELECT bereich FROM " . PARKPLAN_T_TABLE . " WHERE bereich_id='".$row['themenbereich']."'");

    while($rowbereich = $db->sql_fetchrow($resultbereich)) {
        $themenbereich = $rowbereich['bereich'];
    }

//Hier werden noch die Inhalte der Tabelle "phpbb_parkplan" ins Template geschickt. Also eigentlich nichts damit zu tun
}
 
Ich danke euch für jede Unterstützung.

Gruß,
mps

Re: Problem mit Datenbankabfrage (unknown column)

Verfasst: 29.10.2015 17:23
von tas2580
Hallo,

1. SQL Querys verschachteln ist keine gute Idee, schau die mal LEFT JOIN an.

2. WHERE id='".$id."'" Da $id ja wohl ein Integer ist solltest du hier, WHERE id=' . (int) $id machen. Wenn du einen String an die DB übergibst solltest du ihn vorher escapen.

Gruß Tobi

Re: Problem mit Datenbankabfrage (unknown column)

Verfasst: 29.10.2015 18:24
von mps
Das mit den Integer ist schon mal sehr interessant.

Zum ersten Punkt: Auch das wusste ich noch nicht, habe es nun umgebaut - leider trotzdem ohne Erfolg. Hier die neue Meldung:
SQL ERROR [ mysqli ]

Unknown column 'phpbb_parkplan_themen.bereich_id' in 'on clause' [1054]

SQL

SELECT * FROM phpbb_parkplan LEFT JOIN phpbb_parkplan_themen ON phpbb_parkplan.themenbereich=phpbb_parkplan_themen.bereich_id AND phpbb_parkplan.id='1'

BACKTRACE
Was mache ich verkehrt? Liegt es jetzt an einem Fehler in der SQL-Abfrage oder ist mit der Datenbank etwas nicht ganz richtig bzw. etwas nicht richtig konfiguriert.

Re: Problem mit Datenbankabfrage (unknown column)

Verfasst: 30.10.2015 16:54
von gn#36
Am besten testest du alle SQL Abfragen erst mal in phpMyAdmin - wenn es keine Insert oder Update Befehle sind wird ja nichts verändert und du kannst das gefahrlos machen. Das hilft oft beim Fehlerfinden und korrigieren, weil du die Abfrage ändern kannst. Außerdem würde ich dir empfehlen, jeweils einen Alias für die Tabellen zu vergeben, das macht es leichter den SQL Code zu lesen. Also z.B.

Code: Alles auswählen

SELECT a.feld1, b.feld2 FROM tabellenname a LEFT JOIN tabellenname2 b ON a.feld3 = b.feld4 WHERE a.bedingungsfeld = 10
In der Regel ist der Fehler in einer SQL Abfrage in der Nähe von der angemeckerten Stelle, aber gerade "unknown field" ist eigentlich meist ziemlich eindeutig und heißt sehr oft, dass man beim Tippen einen Fehler gemacht hat.

Funktionieren die Abfragen beim direkten ausführen in phpMyAdmin und über phpBB nicht, dann schaust du dir vermutlich eine andere DB an als die die phpBB benutzt, oder du hast Variablen drin die falsch befüllt werden oder im PHP Code falsch eingebaut sind.

Re: Problem mit Datenbankabfrage (unknown column)

Verfasst: 30.10.2015 18:16
von mps
Fehler gefunden. Da ist mir in der Original-Tabelle ein Leerzeichen vor den Spaltennamen gerutscht. Der Tipp mit der SQL-Abfrage hat aber geholfen - danke ;D