Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

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

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von alexfrenzel92, 1 Februar 2015.

  1. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    $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?
     
  2. akretschmer

    akretschmer Datenbank-Guru

  3. akretschmer

    akretschmer Datenbank-Guru

    Btw.: Tabellen und Spalten durchzunummerieren ist schon mal ganz schlecht. Was genau der Fehler ist ist so nicht erkennbar, weil Du die MySQL-Fehlermeldung einfach wegwirfst. Ohne die Tabellen zu kennen kann man es schlecht erraten.
     
  4. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Ich bin mir nicht sicher, ob ich verstehe was du meinst. Zählt die Spaltenbezeichnung "Table 12" als Nummerierung?
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Col1, col2, col3, col4, col6, Tabelle 1, Tabelle 12.
     
  6. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Warum ist dadurch die MySql Fehlermeldung weggeworfen?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Dadurch nicht. Das passiert zwischen

    Code:
    $ergebnis2 = mysql_query($abfrage2);
    
    und

    Code:
    while($row2 = mysql_fetch_row($ergebnis2))
    
     
  8. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    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
     
  9. akretschmer

    akretschmer Datenbank-Guru

    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.
     
    Distrilec gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden