Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in

alexfrenzel92

SQL-Guru
Beiträge
122
$abfrage2 = 'SELECT `COL 1`, `COL 2`, `COL 3`, `COL 4` FROM `TABLE 12` INNER JOIN `TABLE 1` ON `TABLE 12`.`COL 1` = `TABLE 1`.`COL 6` WHERE `TABLE 1`.`COL 1` = '.$id;
$ergebnis2 = mysql_query($abfrage2);
while($row2 = mysql_fetch_row($ergebnis2))

Die Fehlermeldung bezieht sich auf die rote Zeile.

In `TABLE 12`.`COL 1` und `TABLE 1`.`COL 6` ist jeweils jeder Wert nur einmal enthalten, womit der Wert in Table 12 definitiv identifiziert werden sollte. (In der Adresszeile steht bei &id= eine Zahl, die die Zeile in Table 1 angibt. In `COL 6` in Table 1 steht eine Zahl, die die Zeile (COL 1) in Table 12 angibt. Die Werte aus dieser Zeile in Table 12 will ich haben. Später mit echo $row2[2]; den einen Wert aus `TABLE 12`.`COL 3` aus dieser Zeile)

Könnt ihr helfen?
 
Werbung:
Ich habe eben die Fehlermeldung durch """ if ($ergebnis2 === false) { die(mysql_error()); } """ erhalten.
"Column 'COL 1' in field list is ambiguous"

Wirklich interessant ist, dass wenn ich aus """ `COL 1`, `COL 2`, `COL 3`, `COL 4` """ einen * mache, die Daten jetzt wie erwünscht abgefragt werden.
Warum das so ist weiß ich nicht genau aber wenn es funktioniert, reicht es mir.
danke
 
Werbung:
Ich habe eben die Fehlermeldung durch """ if ($ergebnis2 === false) { die(mysql_error()); } """ erhalten.
"Column 'COL 1' in field list is ambiguous"

Wirklich interessant ist, dass wenn ich aus """ `COL 1`, `COL 2`, `COL 3`, `COL 4` """ einen * mache, die Daten jetzt wie erwünscht abgefragt werden.
Warum das so ist weiß ich nicht genau aber wenn es funktioniert, reicht es mir.
danke

Gut, dann brauchst Du jetzt nicht weiterlesen. Für alle, die wissen wollen, wie es zu dem Fehler kommt:

Im Select-Teil steht col1, eine Spalte mit diesem Namen gibt es aber in beiden der gejointen Tabellen. Damit ist die Angabe 'ambiguous'. Das Problem nun mit einem * zu lösen verlagert es in die Applikation, da diese nun im Result-Set 2 Spalten mit dem selben Namen sieht. Je nachdem, wie man später darauf zugreift bekommt man dann entweder einen Fehler dort - oder aber greift zu 50% Wahrscheinlichkeit auf die falsche Spalte zu. Mag sein, daß für manche dies akzeptabel ist.

Lösen liese sich das dann in der Abfrage entwder durch expliziete Angabe der Tabelle, also tabelle12.col1, oder aber durch Aliase. Und wenn man gleich die Tabellen und Spalten sinnvoll benennt ist die Gefahr solcher 'Kollisionen' auch geringer.

Was solls. MySQL, durchnummerierte Spalten, unterdückte Fehlermeldungen, nicht fähig, eine Fehlermeldung zu googeln, Pfusch am Bau in Reinform.
 
Zurück
Oben