Ankündigung

Einklappen
Keine Ankündigung bisher.

Unknown column 'rights' in 'field list'

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Unknown column 'rights' in 'field list'

    Hallo,

    ich habe zur Zeit irgendwie ein Problem. Das verrückte an dem Problem ist, auf meinem lokalen Webserver funktioniert das Script ohne Probleme, aber auf meinem externen will es einfach nicht.

    Folgende SQL:

    PHP-Code:
    $sql "UPDATE boards SET 
        name = '
    $name', 
        cat = '
    $cat', 
        rights = '
    $rights',
        description = '
    $description'
        WHERE id = 
    $id;";
        
    $ergebnis mysql_query($sql$verbindung); 
    Ausgegebene SQL:

    Code:
    UPDATE boards SET name = 'Forum News', cat = '1', rights = 'all,', description = 'Neuigkeiten und Ankündigungen' WHERE id = 6;
    Fehler von mysql_error:

    Code:
    Unknown column 'rights' in 'field list'
    Die Spalte gibt es aber laut phpmyadmin. Nen verstecktes Leerzeichen gibt es auch nicht. Auslesen kann ich diese Spalte übrigends auch nicht.

    Wenn ich den oben angegebenen SQL Befehl allerdings in phpmyadmin eingebe, wird der auch ordnungsgemäß ausgeführt.

    Wo liegt der Fehler?


    mfg
    Link

  • #2
    Dann hast du wohl die falsche/eine alte Datenbank selektiert oder falsch nachgeschaut, die Meldung besagt eindeutig, dass "rights" keine Spalte der entsprechenden Tabelle (demnach "boards") ist.

    Übrigens I:
    rights = 'all,',
    Ist das erste Komma Absicht?

    Übrigens II:
    http://www.php.net/mysql_query
    Anmerkung: Die Anfrage sollte nicht mit einem Semikolon enden.

    Kommentar


    • #3
      Ja, das erste Komma ist beabsichtigt, normal wird in die Spalte z.B. all,1,2,3,4, reingeschrieben oder so.

      In meiner Scriptumgebung benutze ich nur eine Datenbank, deshalb kann ich auch keine ältere oder falsche selektiert haben. Alle anderen Anfragen etc. funktionieren ja noch.

      Kann es evtl. damit zusammenhängen, dass man den mySQL Server oder was auch immer das ist, neu starten muss, damit der hinzugefügte Spalten erkennt? Ich hab ja keine Ahnung, aber sowas könnte es doch theoretisch sein oder?

      An dem Semikolon am Ende des SQL Befehls liegt es auch nicht.


      mfg
      Link

      Kommentar


      • #4
        Ja die beiden übrigens' haben nichts mit dem Problem zu tun.

        RIGHTS befindet sich auch nicht in der Liste der reservierten Worte, daran liegts also auch nicht (hier käme dann sowieso ein Syntaxfehler).
        http://dev.mysql.com/doc/refman/4.1/...ved-words.html

        Exportier mal bitte deine Tabellenstruktur für "boards", oder von mir aus bearbeite über phpMyAdmin einen Datensatz und kopier dann den erzeugten Query hier ins Forum.

        Kommentar


        • #5
          Also phpmyadmin sagt folgendes:

          Bearbeiten:

          PHP-Code:
          $sql 'UPDATE `boards` SET `rights` = \'all,1,\', `description` = \'Beschreibung\' WHERE `id` = 12 LIMIT 1'
          Tabellen-Struktur:

          Code:
          CREATE TABLE `boards` (
            `id` int(11) NOT NULL auto_increment,
            `name` varchar(250) NOT NULL default '',
            `cat` int(11) NOT NULL default '0',
            `folge` int(11) NOT NULL default '0',
            `rights` mediumtext NOT NULL,
            `description` varchar(250) NOT NULL default '',
            PRIMARY KEY  (`id`)
          ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=30 ;

          mfg
          Link

          Kommentar


          • #6
            probiers mal so...

            UPDATE boards SET name = 'Forum News', cat = '1', `rights` = 'all,', description = 'Neuigkeiten und Ankündigungen' WHERE id = 6;


            vielleicht funktionierts..

            Kommentar


            • #7
              Hm ne funktioniert leider auch nicht. Selbe Fehlermeldung. Ich hatte das ja vorher auch so, weil ich die Spaltennamen generell mit den Dingern umschließe.

              mfg
              Link

              Kommentar


              • #8
                Naja okay, war nur ein schuss ins blaue.. zumal zergling eh schon angemerkt hat, dass es sich nicht um ein reserviertes wort handelt!

                Kommentar


                • #9
                  Wenn ich dein CREATE und dann dein UPDATE ausführe bekomme ich nur positive Rückmeldungen. Hat also alles geklappt (wenn auch das UPDATE keine Zeilen getroffen hat).

                  Führ mal diesen Query aus:
                  Code:
                  SHOW TABLES
                  Kommt da `boards` drin vor?

                  Es MUSS an einer nicht oder falsch selektierten Datenbank liegen, wenn die Informationen die du uns hier lieferst stimmen. Zumindest fällt mir sonst absolut nichts anderes ein.

                  Zu welchem Host verbindest du, localhost, extern?

                  Kommentar


                  • #10
                    Also bei SHOW TABLES ist boards auch drin.

                    Ich verbinde jeweils auf localhost. Das einzige was mich halt wie gesagt stutzig macht, es funktioniert nur auf dem externen Server nicht. Auf meinem lokalen xampp Server funktionierts wunderbar.

                    Kann das auch einfach nen mySQL Bug sein?


                    mfg
                    Link

                    Kommentar


                    • #11
                      benenn mal die Spalte "name" um, wenn du die richtige Tabelle bearbeitet hast, sollte zunächst "name" in deinem UPDATE-Query nicht mehr erkannt werden.

                      Ich schließe einen Bug eigentlich aus. Das wäre ja wie wenn ein Auto nicht fahren könnte, solche Fehler kann sich keiner erlauben.
                      Ich warte die ganze Zeit darauf, dass du den Fehler bei dir selbst findest.

                      Machen wir einen einfachen Test. Erstell eine neue Datei mit nur diesem Inhalt:
                      PHP-Code:
                      <?php
                      error_reporting
                      (E_ALL);
                      ini_set('display_errors'1);
                      mysql_connect('localhost''***''***') or die(mysql_error());
                      mysql_select_db('***') or die(mysql_error());
                      $r mysql_query("SHOW TABLES") or die(mysql_error());
                      $tables = array();
                      while (
                      $table mysql_fetch_array($rMYSQL_NUM)) {
                        
                      $table $table[0];
                        
                      $r2 mysql_query("SHOW COLUMNS FROM `$table`") or die(mysql_error());
                        
                      $columns = array();
                        while (
                      $column mysql_fetch_array($r2MYSQL_NUM)) {
                          
                      $columns[] = $column[0];
                        }
                        
                      $tables[$table] = $columns;
                      }
                      var_dump(array_key_exists('boards'$tables), $tables['boards']);
                      $r3 mysql_query($sql "UPDATE boards SET name = 'Forum News', cat = '1', rights = 'all,', description = 'Neuigkeiten und Ankündigungen' WHERE id = 6") or die(mysql_error());
                      var_dump($r3mysql_affected_rows());
                      die(
                      "alles gut");
                      ?>
                      Füll die entsprechenden *** Parameter aus.

                      Kommentar


                      • #12
                        Vielleicht exportierst du auch einfach mal die lokale Datenbank und importierst sie dann, unter anderem Namen, auf deinem externen Server.
                        Im betreffenden Script änderst du natürlich den Datenbank-Namen. An dieser Stelle fallen auch evtl. Fehler bei den Benutzer-Daten auf.
                        Das Semikolon hast du hoffentlich schon entfernt.
                        Zitat von GSJLink
                        Auslesen kann ich diese Spalte übrigends auch nicht.

                        Wenn ich den oben angegebenen SQL Befehl allerdings in phpmyadmin eingebe, wird der auch ordnungsgemäß ausgeführt.
                        Was heißt das jetzt? Kannst du die Spalte in phpMyAdmin auslesen, im Script aber nicht?
                        Mit welchem Benutzer greifst du überhaupt auf die Datenbank zu? Versuchs mal per root. Sollte eine Benutzer nicht die nötigen Rechte besitzen, um auf eine bestimmte Tabelle zuzugreifen, wird aber eigentlich ein Permission-Error ausgegeben, oder?
                        Leider können wir hier nur Rätselraten, zumal Zergling den Query korrekt ausführen kann!

                        Kommentar


                        • #13
                          Zitat von Zergling
                          benenn mal die Spalte "name" um, wenn du die richtige Tabelle bearbeitet hast, sollte zunächst "name" in deinem UPDATE-Query nicht mehr erkannt werden.

                          Ich schließe einen Bug eigentlich aus. Das wäre ja wie wenn ein Auto nicht fahren könnte, solche Fehler kann sich keiner erlauben.
                          Ich warte die ganze Zeit darauf, dass du den Fehler bei dir selbst findest.

                          Machen wir einen einfachen Test. Erstell eine neue Datei mit nur diesem Inhalt:
                          PHP-Code:
                          <?php
                          error_reporting
                          (E_ALL);
                          ini_set('display_errors'1);
                          mysql_connect('localhost''***''***') or die(mysql_error());
                          mysql_select_db('***') or die(mysql_error());
                          $r mysql_query("SHOW TABLES") or die(mysql_error());
                          $tables = array();
                          while (
                          $table mysql_fetch_array($rMYSQL_NUM)) {
                            
                          $table $table[0];
                            
                          $r2 mysql_query("SHOW COLUMNS FROM `$table`") or die(mysql_error());
                            
                          $columns = array();
                            while (
                          $column mysql_fetch_array($r2MYSQL_NUM)) {
                              
                          $columns[] = $column[0];
                            }
                            
                          $tables[$table] = $columns;
                          }
                          var_dump(array_key_exists('boards'$tables), $tables['boards']);
                          $r3 mysql_query($sql "UPDATE boards SET name = 'Forum News', cat = '1', rights = 'all,', description = 'Neuigkeiten und Ankündigungen' WHERE id = 6") or die(mysql_error());
                          var_dump($r3mysql_affected_rows());
                          die(
                          "alles gut");
                          ?>
                          Füll die entsprechenden *** Parameter aus.
                          Da kommt folgendes raus:

                          Code:
                          bool(true) array(5) { [0]=> string(2) "id" [1]=> string(4) "name" [2]=> string(3) "cat" [3]=> string(5) "folge" [4]=> string(11) "description" } Unknown column 'rights' in 'field list'

                          @phpdummi: Jop es ist ein Benutzer mit Vollzugriff (100% sicher!). Exportieren bringt denke ich nichts, ist ja zu 100% die gleiche DB bis auf den Inhalt. Und ja, phpmyadmin kann auch die Spalte rights auslesen und bearbeiten, mein Script nicht.
                          Ja den Query kann ich auf meinem lokalen Server und nach Tests auch auf div. anderen externen Servern ausführen, nur halt auf diesem nicht. Kann das auch an einer Fehleinstellung vom Server liegen? Ist ja schließlich nicht meiner.

                          btw: http://esportslive.de/info.php vll. findet ihr ja was

                          mfg
                          Link

                          Kommentar


                          • #14
                            Dann hätten sich das Problem ja geklärt, die Tabelle `boards` hat nur die Spalten "{ [0]=> string(2) "id" [1]=> string(4) "name" [2]=> string(3) "cat" [3]=> string(5) "folge" [4]=> string(11) "description" }", kein `rights`.

                            Kommentar


                            • #15
                              Also nicht das ihr mich jetzt für dumm haltet aber:



                              ...

                              mfg
                              Link

                              Kommentar

                              Lädt...
                              X