Mazzo: Syntaxfehler: ALTER TABLE...

ich versteh den Fehler nicht. Dieselbe Syntax in phpMyAdmin funktioniert, aber in PHP-erstellten Webseiten nicht:

$altertable = mysql_query("ALTER TABLE "$tablename" CHANGE "$old[$k]" "$neu[$k]" TEXT DEFAULT NULL;")
or die("ALTER TABLE FEHLER: ".mysql_error());

Es folgt diese Errormeldung:
You have an error in your SQL syntax near '"tabellenname" CHANGE 'alt' 'neu' TEXT DEFAULT NULL'
sieht jemand den Syntaxfehler? Ich habs auch schon mit Hochkomma anstelle backslash-gänsefüsschen um die Variablen versucht...

  1. Hi,

    Es folgt diese Errormeldung:
    You have an error in your SQL syntax near '"tabellenname" CHANGE 'alt' 'neu' TEXT DEFAULT NULL'

    und was hat die mit PHP zu tun? Richtig, exakt gar nichts.

    sieht jemand den Syntaxfehler?

    Nein. Lass Dir den generierten String ausgeben, anstatt ihn gegen die Datenbank zu schicken. _Dann_ kann man ihn begutachten.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. und was hat die mit PHP zu tun? Richtig, exakt gar nichts.

      immerhin wird die Seite mit PHP kompiliert und es gibt keine Rubrik "mySQL" in diesem Forum. Bevor sich die simpla Frage nach einer Syntax im Datenbankbereich verliert hab ich sie hierhin getan. Asche auf mein Haupt...

      sieht jemand den Syntaxfehler?

      Nein. Lass Dir den generierten String ausgeben, anstatt ihn gegen die Datenbank zu schicken. _Dann_ kann man ihn begutachten.

      Dort sieht der String gut aus. dieselbe Syntax (ohne Backslash-Gänsefüsschen) ist ja auch unter phpMyAdmin funktionstüchtig. Versuche die " durch ' zu ersetzen haben keine Wirkung. Auch wenn ich die 'äusseren' Gänsefüsschen um das query-statement drinlasse.

      1. http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex

        also statt

        "ALTER TABLE "$tablename" CHANGE "$old[$k]" "$neu[$k]" TEXT DEFAULT NULL;"

        so

        "ALTER TABLE $tablename CHANGE '{$old[$k]}' '{$neu[$k]}' TEXT DEFAULT NULL;"

        1. Danke für die Hilfe, es war noch etwas anders:

          $altertable = mysql_query("ALTER TABLE $tabellenname CHANGE $old[$k] $neu[$k] TEXT DEFAULT NULL;")
          or die("nochnFehler ".mysql_error());

          ich musste die ' gegen ´ austauschen, dann ging es (mühsames ausprobieren und genaue Vergleiche mit der Syntax, die phpMyAdmin ausgibt).
          Alle anderen Vorschläge haben leider eine Fehlermeldung ergeben. Danke aber für die Mithilfe!

      2. Hi,

        und was hat die mit PHP zu tun? Richtig, exakt gar nichts.
        immerhin wird die Seite mit PHP kompiliert

        *seufz* und das ganze passiert auf einem Rechner. Warum wählst Du dann nicht "Hardware"?

        Das Problem wäre identisch, wenn Du das ganze mit ASP oder sonstwas machen würdest. Es hat _nichts_ mit PHP zu tun.

        und es gibt keine Rubrik "mySQL" in diesem Forum.

        MySQL ist eine ...?

        Bevor sich die simpla Frage nach einer Syntax im Datenbankbereich verliert

        Wieso "verlieren"?

        Asche auf mein Haupt...

        Ja. Bitte in Zukunft sorgfältiger wählen, nicht einfach irgendwas nehmen, was zufällig mit ihm Spiel ist.

        Nein. Lass Dir den generierten String ausgeben, anstatt ihn gegen die Datenbank zu schicken. _Dann_ kann man ihn begutachten.
        Dort sieht der String gut aus. dieselbe Syntax (ohne Backslash-Gänsefüsschen)

        Ah, also das selbe, nur anders?

        Versuche die " durch ' zu ersetzen haben keine Wirkung.

        Nicht willkürlich rumprobieren. Die ausgegebene(!) Syntax mit der Doku Deines DBMS vergleichen.

        Auch wenn ich die 'äusseren' Gänsefüsschen um das query-statement drinlasse.

        Welche äußeren Gänsefüßchen?

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. lass die anführungszeichen beim tabellennamen einfach mal ganz weg...
    und beim rest würde ich hochkommas benutzen; bin mir aber nicht 100%ig sicher.

    robin