Problem mit Datenbankabfrage (unknown column)

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Problem mit Datenbankabfrage (unknown column)

Beitrag 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
Benutzeravatar
tas2580
Ehemaliges Teammitglied
Beiträge: 3029
Registriert: 01.07.2004 05:42
Wohnort: /home/tas2580
Kontaktdaten:

Re: Problem mit Datenbankabfrage (unknown column)

Beitrag 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
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Re: Problem mit Datenbankabfrage (unknown column)

Beitrag 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.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Re: Problem mit Datenbankabfrage (unknown column)

Beitrag 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.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
mps
Mitglied
Beiträge: 143
Registriert: 10.11.2013 21:02

Re: Problem mit Datenbankabfrage (unknown column)

Beitrag 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
Antworten

Zurück zu „Extension Bastelstube“