Fehler bei Mysql Abfrage (Unknown column '' in 'field list')

slicka1

Mitglied
Hallo,

ich habe ein Problem mit einer mysql Abfrage.
und zwar habe ich eine Suche bei der man eine Nummer eingeben kann und anschließend entsprechende Ergebnisse erhält. Gibt man nun eine Nummer ein die ausschliesliche aus Zahlen besteht (bsp. 403200), kommt auch das passende Ergebnis.

Aber wenn man nun eine Nummer eingibt, die neben Zahlen auch Buchstaben enthält (bsp. 403200W) so erhalte ich folgenden MySql Error:

Unknown column '403200W' in 'field list'

Das MySql Feld in dem gesucht wird, hat den Typ varchar(40)

Hier noch die MySql Abfrage:

PHP:
$sql = "SELECT tblvgweb.* , tblwebbestand.Frei, tblwebbestand.Dispo, tblwebbestand.Kritisch
              FROM tblvgweb
              INNER JOIN tblwebbestand ON tblvgweb.TEILENR = tblwebbestand.TEILENR
              WHERE tblvgweb.TEILENR LIKE '".$_GET['TEILENR']."%' OR tblvgweb.HERST_TEILE_SHORT LIKE '".$_GET['TEILENR']."%'
              ORDER BY '".$_GET['sort']."' ".$list.""; 
      $result = mysql_query($sql) OR die(mysql_error());

Für Hinweise/Tipps schonmal vielen Dank im Voraus!

Gruß
slicka1
 
Ich würde mir mal ansehen, was nach ORDER BY für Werte stehen.

Welchen Inhalt hat $list?
welchen Inhalt hat $_GET['sort']?

Am einfachsten kommtst Du dem Fehler auf die Spur, wenn du den kompletten Sql-String $sql vor der Ausführung einmal anzeigen läßt. Vielleicht siehst Du dann schnell das Problem.

vop
 
$list hat entweder den Inhalt ASC oder DESC
und $_GET['sort'] hat den Inhalt nach dem sortiert werden soll (entweder nach der nummern, oder nach anderen Kriterien die in meiner Tabelle angezeigt werden)

Ich habe mir den SQL string auch angesehen, konnte aber keine Fehler feststellen, die Teilenr. steht in ' ' (bsp: '400200W%'). Ausserdem funktioniert die Abfrage ja einwandfrei solange keine Buchstaben enthalten sind :\
 
SELECT tblvgweb . * , tblwebbestand.Frei, tblwebbestand.Dispo, tblwebbestand.Kritisch FROM tblvgweb INNER JOIN tblwebbestand ON tblvgweb.TEILENR = tblwebbestand.TEILENR WHERE tblvgweb.TEILENR LIKE '403200W%' OR tblvgweb.HERST_TEILE_SHORT LIKE '403200W%' ORDER BY 'HERST_TEILENR' asc
 
Ist das tatsächlich der Sql-Befehl, wie er vom System erzeugt wurde?
slicka1 hat gesagt.:
SELECT tblvgweb . * , tblwebbestand.Frei, tblwebbestand.Dispo, tblwebbestand.Kritisch FROM tblvgweb INNER JOIN tblwebbestand ON tblvgweb.TEILENR = tblwebbestand.TEILENR WHERE tblvgweb.TEILENR LIKE '403200W%' OR tblvgweb.HERST_TEILE_SHORT LIKE '403200W%' ORDER BY 'HERST_TEILENR' asc
Das kann ich mir fast nicht vorstellen, da zwischen tblvgeb und .* ein Leerzeichen steht!?

Mach Dir doch bitte die Mühe und lass dir den Befehl wirklich ausgeben, evtl. steht da nämlich gerade nicht das drin, was du erwartest.

vop
 
vop hat gesagt.:
Ist das tatsächlich der Sql-Befehl, wie er vom System erzeugt wurde?

Ja das ist tatsächlich der Befehl der vom System erzeugt wurde


vop hat gesagt.:
Mach Dir doch bitte die Mühe und lass dir den Befehl wirklich ausgeben, evtl. steht da nämlich gerade nicht das drin, was du erwartest.

Die "Mühe" hab ich mir gemacht, hab den befehl mir echo ausgegeben, das Ergebnis habe ich bereits oben gepostet. Deshalb bereitet mir dieses Problem auch so kopfzerbrechen, da ich absolut keine Ahnung habe an was es liegen könnte.

vop hat gesagt.:
Das kann ich mir fast nicht vorstellen, da zwischen tblvgeb und .* ein Leerzeichen steht!?
Daran ist es auch nicht gelegen, habs grad auch nochmal ohne dem Leerzeichen ausprobiert... macht keinen Unterschied!

noch weitere Ideen?

gruß
slicka1
 
Hast Du es mal direkt mit MySql-Zugriff über eine Konsole oder so versucht?

Ansonsten würde ich den Befehl Stück für Stück auseinandernehmen.
Also ORDER BY weglassen

Dann würde ich die beiden LIKE - Konstrukte, die mit OR kombiniert werden mal einzeln in Klammern setzen
(... LIKE '....' ) OR ( ... LIKE .... )

Hilft das vielleicht

vop
 
vop hat gesagt.:
Hast Du es mal direkt mit MySql-Zugriff über eine Konsole oder so versucht?
Nein so einen Zugriff habe nicht

vop hat gesagt.:
Ansonsten würde ich den Befehl Stück für Stück auseinandernehmen.
Also ORDER BY weglassen

Dann würde ich die beiden LIKE - Konstrukte, die mit OR kombiniert werden mal einzeln in Klammern setzen
(... LIKE '....' ) OR ( ... LIKE .... )

Hilft das vielleicht
Klappt auch nicht.


Wie gesagt, die Abfrage funktioniert ja einwandfrei wenn ich Zahlen eingebe (was auch 99% der Abfragen, die mit dem Script gemacht werden entspricht), aber sobald Buchstaben oder Kombinationen aus Ziffern und Buchstaben eingegeben werden, erhalte ich den Fehler. Und ich würde das 1% der Abfragen eben auch noch gerne abdecken ;)

Code:
Unknown column '...' in 'field list'

gruß
slicka1
 
Ich habe schon verstanden, dass der Fehler nur bei der Kombination von Ziffern und Buchstaben auftritt. Ich wundere mich dabei genauso wie Du darüber.
Du solltest dennoch versuchen, den Fehler weiter einzukreisen, indem Du bspw. nur eine der gejointen Tabellen ausprobierst, dann die andere etc.

Vielleicht mag deine MySql-Version (welche ist das eigentlich nochmal) ja aus irgendwelchen Gründen keine Konvertierung von '403200W%' weil es in der Spalte eine Zahl erwartet oder sonsts so irgend etwas.

Wie sind tblvgweb.HERST_TEILE_SHORT
und tblvgweb.TEILENR
in der Tabelle definiert?

Sorry, so langsam gehen mir auch die Ideen aus.
vop
 

Neue Beiträge

Zurück