dynamisch Spaltennamen der Tabelle auslesen für SQL Query

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • dynamisch Spaltennamen der Tabelle auslesen für SQL Query

    Hi,

    ich habe hier ein kleines Syntaxproblem bei einem SQL-Update Befehl welcher über ein dynamisch erzeugten String arbeiten soll:

    PHP-Code:
    <?php
    /**************************************/
    /* Datenbankfelder Änderung speichern */
    /**************************************/
    //nur zum Test, diese Daten kommen ansonsten aus Flash MX
        
    $tabelle="links";
        
    $linksID="1";
        
    $linksTitel="neu";
           
    $linksURL="lalal";
           
    $linksKategorie="dsfsdfsf";
           
    $linksNotizen="sdfsfsfd";
           
    $linksDatumNeu="";
           
    $linksUserNeu="";
           
    $linksDatumAenderung="";
           
    $linksUserAenderung="";
    //Verbindung zum MYSQL-Server Herstellen
    $conn mysql_connect("localhost","xxx","xxx");
    //Verbindung zur Datenbank herstellen
    $db mysql_select_db("privat");
    //dynamisch alle wichtigen Spaltennamen auslesen
    $rshelper mysql_query("SELECT * FROM ".$tabelle$conn);    
    $anzahlspalten mysql_num_fields($rshelper);
    $sql ="UPDATE ".$tabelle." SET ";
    for (
    $x=0;$x<$anzahlspalten;$x++)
    {
        
    $sql $sql.mysql_field_name($rshelper$x)."='$".mysql_field_name($rshelper$x)."'"
        if (
    $x<$anzahlspalten)
        {
        
    $sql $sql.", ";
        }
    }
    $sql $sql."WHERE ".mysql_field_name($rshelper0)."='$".mysql_field_name($rshelper0)."'";
    echo 
    $sql;
    //Datenbank updaten
    $rs mysql_query ($sql$conn);
    if (
    $rs) echo "OK";
    else echo 
    "false";
    mysql_close($conn);
    ?>
    Da dieses Script für alle Tabellen der Datenbank funktionieren soll, muss ich dynamisch die Spaltennamen der Tabellen auslesen und in ein String schreiben. Leider funktionierte die Updatefunktion dann anschliessend doch nicht. Optisch sieht der String aber gut aus. Was habe ich falsch gemacht?
    SODAH | JOERG KRUEGER
    WEBDESIGN: Wordpress Webdesign Mainz
    ACCESS: ACCESS Datenbank Mainz
    SHOUTCAST RADIO: FREE INTERNET WEB RADIO

  • #2
    Sorry ich Trottel, hab da doch 2 Syntaxfehler gehabt. Jetzt funktionierts.
    Für alle, die es interessiert, hier mein funktionierender Code:

    PHP-Code:
    <?php
    /**************************************/
    /* Datenbankfelder Änderung speichern */
    /**************************************/
    //nur zum Test, diese Daten kommen ansonsten aus Flash MX
        
    $tabelle="links";
        
    $linksID="1";
        
    $linksTitel="neu";
           
    $linksURL="lalal";
           
    $linksKategorie="dsfsdfsf";
           
    $linksNotizen="sdfsfsfd";
           
    $linksDatumNeu="";
           
    $linksUserNeu="";
           
    $linksDatumAenderung="";
           
    $linksUserAenderung="";
    //Verbindung zum MYSQL-Server Herstellen
    $conn mysql_connect("localhost","xxx","xxx");
    //Verbindung zur Datenbank herstellen
    $db mysql_select_db("privat");
    //dynamisch alle wichtigen Spaltennamen auslesen
    $rshelper mysql_query("SELECT * FROM ".$tabelle$conn);    
    $anzahlspalten mysql_num_fields($rshelper);
    $sql ="UPDATE ".$tabelle." SET ";
    for (
    $x=0;$x<$anzahlspalten;$x++)
    {
        
    $sql $sql.mysql_field_name($rshelper$x)."='$".mysql_field_name($rshelper$x)."'"
        if (
    $x $anzahlspalten-1$sql $sql.", ";
    }
    $sql $sql." WHERE ".mysql_field_name($rshelper0)."='$".mysql_field_name($rshelper0)."'";
    echo 
    $sql;
    //Datenbank updaten
    $rs mysql_query ($sql$conn);
    if (
    $rs) echo "OK";
    else echo 
    "false";
    mysql_close($conn);
    ?>
    SODAH | JOERG KRUEGER
    WEBDESIGN: Wordpress Webdesign Mainz
    ACCESS: ACCESS Datenbank Mainz
    SHOUTCAST RADIO: FREE INTERNET WEB RADIO

    Kommentar


    • #3
      kann ich mir kaum vorstellen, dass das klappt ... sicher, dass in der db jetzt nicht ein string mit '$spaltenname' drin steht statt dem erwarteten wert?
      Kissolino.com

      Kommentar


      • #4
        komischer Weise kam tatsächlich am Schluss ein OK. Aber Daten wurden irgendwie net in der DB upgedatet. Hmmmmmmmmm......
        Scheint doch nicht zu funzen.

        Mein altes "starres" Script funzt dagen aber.

        PHP-Code:
        $sql "UPDATE links SET linksID='$linksID', linksTitel='$linksTitel' WHERE linksID='$linksID'"
        Kann man nicht den Trick, der dynamisch erstellten SQl, so gestallten, wie ich das gemacht habe? Hab so etwas noch nie probiert.
        SODAH | JOERG KRUEGER
        WEBDESIGN: Wordpress Webdesign Mainz
        ACCESS: ACCESS Datenbank Mainz
        SHOUTCAST RADIO: FREE INTERNET WEB RADIO

        Kommentar


        • #5
          du hast hier ein problem:
          PHP-Code:
          $sql $sql.mysql_field_name($rshelper$x)."='$".mysql_field_name($rshelper$x)."'"
          dynamische variablen sehen eher so aus:
          PHP-Code:
          ${mysql_field_name($rshelper$x)} 
          in deinem fall würd ich aber eher damit arbeiten:
          PHP-Code:
          $_POST[mysql_field_name($rshelper$x)]
          // bzw
          $_GET[mysql_field_name($rshelper$x)] 
          Kissolino.com

          Kommentar


          • #6
            Danke, werde ich mal Testen.
            SODAH | JOERG KRUEGER
            WEBDESIGN: Wordpress Webdesign Mainz
            ACCESS: ACCESS Datenbank Mainz
            SHOUTCAST RADIO: FREE INTERNET WEB RADIO

            Kommentar


            • #7
              Vielen tausend Dank. Also ich konnte jetzt die Varianten mit den ${lalala} umsetzen. Und diesmal wurde auch wirklich Datensätze upgedatet.

              PHP-Code:
              <?php
              /**************************************/
              /* Datenbankfelder Änderung speichern */
              /**************************************/
                  
              $tabelle="links";
                  
              $linksID=1;
                  
              $linksTitel="wurstbroetchen";
                     
              $linksURL="dfhgghfhfhd";
                     
              $linksKategorie="wdfgdfgdfg";
                     
              $linksNotizen="dsfgdfhgdfdhfhfhfh";
                     
              $linksDatumNeu="";
                     
              $linksUserNeu="";
                     
              $linksDatumAenderung="";
                     
              $linksUserAenderung="";

              //Verbindung zum MYSQL-Server Herstellen
              $conn mysql_connect("localhost","xxx","xxx");
              //Verbindung zur Datenbank herstellen
              $db mysql_select_db("privat");
              //dynamisch alle wichtigen Spaltennamen auslesen
              $rshelper mysql_query("SELECT * FROM ".$tabelle$conn);    
              $anzahlspalten mysql_num_fields($rshelper);
              $sql ="UPDATE $tabelle SET ";
              for (
              $x=0;$x<$anzahlspalten;$x++)
              {
                  
              $sql $sql.mysql_field_name($rshelper$x)." = '".${mysql_field_name($rshelper$x)}."'"
                  if (
              $x $anzahlspalten-1$sql $sql.", ";
              }
              $sql $sql." WHERE ".mysql_field_name($rshelper0)." = ".${mysql_field_name($rshelper0)}.";";
              echo 
              $sql;
              //Datenbank updaten
              $rs mysql_query ($sql$conn);
              if (
              $rs) echo "OK";
              else echo 
              "false";
              mysql_close($conn);
              ?>

              die Methode mit POST und GET brauche ich net, da die Variblen scheinbar sauber vom Flash ins PHP übertragen werden.
              SODAH | JOERG KRUEGER
              WEBDESIGN: Wordpress Webdesign Mainz
              ACCESS: ACCESS Datenbank Mainz
              SHOUTCAST RADIO: FREE INTERNET WEB RADIO

              Kommentar


              • #8
                Original geschrieben von sodah
                die Methode mit POST und GET brauche ich net, da die Variblen scheinbar sauber vom Flash ins PHP übertragen werden.
                das hat nichts mit flash zu tun, sondern mit den einstellungen in der php.ini => register globals
                Kissolino.com

                Kommentar


                • #9
                  man lernt halt nie aus. Danke für solche Tipps!!!
                  SODAH | JOERG KRUEGER
                  WEBDESIGN: Wordpress Webdesign Mainz
                  ACCESS: ACCESS Datenbank Mainz
                  SHOUTCAST RADIO: FREE INTERNET WEB RADIO

                  Kommentar


                  • #10
                    Original geschrieben von sodah
                    man lernt halt nie aus. Danke für solche Tipps!!!
                    OffTopic:
                    dafür darfst du mir bei gelegenheit ne mail schicken, die mir erklärt, wie du das mit dem zauberer auf deiner hp-startseite gemacht hast
                    Kissolino.com

                    Kommentar


                    • #11
                      hallo!

                      bitte bitte schicke mir das auch..!


                      danke!!!- lg, harry d.

                      Kommentar


                      • #12
                        wasfür Zauberer ich sehe nur eine JS-Fehlermeldung und
                        anschliessend eine Seite mit rotem Hintergrund, mehr nicht

                        Kommentar

                        Lädt...
                        X