• Hallo,


    kann es sein, dass man bei einer MySQL-Tabelle die Spalten nicht mit Zahlen benennen kann? Ich habe also eine Tabelle in der die Spalten 01,02,03 usw. heissen.


    Jetzt möchte ich mittels UPDATE in ein Feld einer Spalte eine 1 eintragen lassen wo vorher z.B. eine 0 stand:


    $sql=mysql_query("UPDATE tabellenname SET '01'='1' ");
    oder auch
    $sql=mysql_query("UPDATE tabellenname SET 01='1' ");
    funktioniert nicht


    Wenn ich die Spalte jedoch umbenenne z.B. in Test gehts mittels:
    $sql=mysql_query("UPDATE tabellenname SET Test='1' ");



    Andi

  • Hallo,


    kann es sein, dass man bei einer MySQL-Tabelle die Spalten nicht mit Zahlen benennen kann? Ich habe also eine Tabelle in der die Spalten 01,02,03 usw. heissen.


    Gute frage.



    Klappt den ein:

    Code
    1. $sql=mysql_query("UPDATE `tabellenname` SET `01`=1");


    ? Wenn auch nicht würde ich sagen, nein es ist nicht Möglich.


    Viel Erfolg und schöne Ostern!


    Rafael


    P.S.: Vielleicht auch mals Rizzo's Tipps und Tricks bezüglich "MySQL und Backticks" lesen!

    sizeof(void)

  • Danke aber das geht leider auch nicht. komisch, normalerweise dürfte es kein Problem sein


    Gibt es keine Fehlermeldung? Stichwort: "mysql_errno()"
    Stimmten Tabellenname / Spaltenname zu 100%?
    Von was für einen Type ist die Spalte?Soll es ein andere Type als Zahl sein solltest du:

    Code
    1. $sql=mysql_query("UPDATE `tabellenname` SET `01`='1'");


    versuchen?

    sizeof(void)

  • Imho können Spaltennamen nicht nur aus Zahlen bestehen. :)


    Falsch!



    Code
    1. CREATE TABLE `testDB`.`test` (
    2. `01` INT NOT NULL
    3. ) ENGINE = [B]MyISAM[/B]


    ergibt:

    Code
    1. 1 If field type is "enum" or "set", please enter the values using this format: 'a','b','c'...
    2. If you ever need to put a backslash ("\") or a single quote ("'") amongst those values, precede it with a backslash (for example '\\xyz' or 'a\'b').
    3. 2 For default values, please enter just a single value, without backslash escaping or quotes, using this format: a


    Code
    1. CREATE TABLE `testDB`.`test` (
    2. `01` INT NOT NULL
    3. ) ENGINE = [B]InnoDB[/B]


    ergibt:

    Code
    1. Table `testDB`.`test` has been created.


    Also kommt es auf die Storage Engine an.


    Bei der InnoDB klappt auch ein :


    SQL
    1. INSERT INTO test( [B]`[/B]01[B]`[/B] )
    2. VALUES ( 1 )


    und ein

    SQL
    1. UPDATE test SET [B]`[/B]01[B]`[/B] =111


    Also InnoDB benutzen dann klappt es auch mit den Feldern nur aus Zahlen!
    Aber immer schon die Backticks benutzen, sonst gibt es Probleme!


    So gn8


    Rafael

    sizeof(void)

  • Hallo ASchwiedy,


    Du solltest rein aus Prinzip darauf verzichten Felder in einer DB nur numerisch zu benennen. Zum einen hat man nicht immer Zugang zu InnoDB, weil viele Hoster nur MyISAM anbieten. Zum anderen kann es auch später in PHP zu Probleme führen. Der Feldname entspricht dem Variablenname in PHP, dort sind Variablen wie $4711 unzulässig. Auch der objektorientierte Aufruf $objekt->4711 nach mysql_fetch_object() führt zu einem Parse Error. Also müsstest Du die Felder mit Alias auslesen, weshalb Du den Feldern auch von vornherein einen ordentlichen Name geben kannst. ;)

  • Und ganz abgesehen davon sollte der Spaltenname auch Rückschlüsse auf den Sinn eines Datenfeldes liefern, was bei '01' nun überhaupt nicht gegeben ist. Dann kannst Du auch alle Spalten mit a,b,c usw. benennen. Sowas macht man alleine aus Gründen der Verständlichkeit und Nachvollziehbarkeit der Logik schon nicht.