Arrays in SQL-Querys

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

  • Arrays in SQL-Querys

    Hallo,

    da habe ich doch glatt mal eine Frage. Ich noch nicht sehr lange dabei, also verzeiht meine Unwissenheit. (bla)

    Folgende Problematik:

    Um mit nur einer einzigen MySQL-Query auszukommen, möchte ich die Spaltennamen in der Query aus Variablen und Arrays zusammenbauen.

    Die Spaltennamen bestehen jeweils aus einem Präfix und einem Suffix:

    z.B. xyz_spalte1

    wobei "xyz" das Präfix ist und "_spalte1" das Suffix. (öhm... logisch, oder?)

    Wenn ich also folgendes Definiere:

    PHP-Code:
    $praefix "xyz";
    $suffix  = array (0=> '_spalte1'_'spalte2'_'spalte3'); 
    dann müsste ich doch die Spaltennamen aus jeweils dem Präfix und einem entsprechenden Suffix zusammensetzen können.

    z.B.

    xyz_spalte1
    xyz_spalte2
    xyz_spalte3

    Wie kann ich nun aber die verschiedenen Werte des Arrays in die Query bringen? Die Anzahl der einzelnen Werte in dem Array ist übrigens variabel...

    Hat da jemand eine Idee?

    Grüße

    Blackmane
    Zuletzt geändert von Blackmane; 23.03.2005, 16:17.
    Ich war`s nicht!

  • #2
    implode
    PHP-Code:
    echo implode(' ' $praefix$suffix); 
    oder eine Schleife.
    hopka.net!

    Kommentar


    • #3
      Danke für Deine Antwort!

      An eine Schleife hatte ich auch schon gedacht. Und zwar:

      Mit
      PHP-Code:
      $values    count ($suf); 
      zähle ich die Anzahl der Werte in den Arrays

      und mit
      PHP-Code:
      for($i=0$i<$values$i++) {

      $suf[$i];


      kann ich z.B. die einzelnen Werte aus dem Array hochzählen... also

      $suf[0]
      $suf[1] usw...

      Die Arrays zu meinen Spaltennamen zusammenflicken war nicht soooo schwer. Ich hab´s zwar nicht mit implode() gemacht, aber es hat soweit funktioniert.

      Trotzdem bleibt das Problem, wie ich die einzenlnen Arrays in die Query bekomme. Meine SQL-Query sieht so aus:
      PHP-Code:
      $query mysql_query("SELECT ".$pre.", ".$pre$suf[0].", ".$pre$suf[1].", ".$pre$suf[2].
      FROM "
      .$pre." WHERE foo=bar; 
      (Syntaxfehler sind inklusive - hab die Query gerade aus meinem Kopf gedrückt...)

      Nur habe ich einzelne Suffix-Arrays, die nicht nur 3 Werte beeinhalten, sondern 5 oder 8. Das bedeutet, ich muss irgendwie eine Möglichkeit finden, die variablen Arrays in die Query zu schreiben, je nachdem wie viele Werte in dem Array vorhanden sind...

      und daran scheitere ich momentan...
      Ich war`s nicht!

      Kommentar


      • #4
        Nun deine SQL-Anfrage ist ja nur ein String. Strings kann man mit Schleifen einfach zusammensetzen.
        Beispiel:
        PHP-Code:
        $sql "SELECT ".$pre
        foreach (
        $suf as $s)
            
        $sql .= ", ".$pre.$s;
        $sql .= "FROM ".$pre." WHERE foo=bar"
        Meinst du das?

        Kommentar


        • #5
          Ich merke schon, dass ich noch nicht "verschachtelt" genug denke...

          Mal sehen, ob ich damit was anfangen kann...
          Ich war`s nicht!

          Kommentar


          • #6
            Das ist die perfekte Lösung für mein Problem.

            Ich habe wirklich viel zu kompliziert rumgecodet.

            Man lernt nie aus.

            Danke Jongens...
            Ich war`s nicht!

            Kommentar


            • #7
              Ich bin jetzt zwar einen großem Schritt weiter, dennoch habe ich eine weitere Frage.

              Mit z.B.
              PHP-Code:
              $sql_select "SELECT id_bla, id_".$pre;
                  
                  foreach (
              $suf as $s)
                  
              $sql_select .= ", ".$pre.$s;
                  
                  
              $sql_select .= " FROM ".$pre." WHERE id_bla=".$id_blub
              kann ich ja wunderbar meine Arrays in die SQL-Query schreiben.

              Juhu.

              Jetzt die Frage. Wie sieht es aber mit einem UPDATE aus?
              PHP-Code:
              $sql_update    "UPDATE ".$pre." SET id_foo = '123' "

                  foreach (
              $suf as $s)
                  
                  
              $sql_update .= ", ".$pre.$s." = '$".$pre.$s." ' ";
                  
                  
              $sql_update .= " WHERE id_blub = '123'"
              Gebe ich dann $sql_update per echo aus, bekomme ich sowas:

              UPDATE tabelle SET foo_bar = '$foo_bar', '$foo_bar' WHERE usw...

              Das Problem liegt in den Variablen. Hier sollen eigentlich die Inhalte der Variablen auftauchen und nicht die Variablen selbst. Ich denke, das hat irgendwas mit der Syntax zu tun...

              Kann mir da jemand helfen?

              Zuletzt geändert von Blackmane; 29.03.2005, 15:29.
              Ich war`s nicht!

              Kommentar


              • #8
                such mal nach variable variablen.

                aber ich habe einfach das gefühl, dass die datenstruktur unnötig komplex aufgebaut ist.
                evtl. solltest du multidimensionale arrays verwenden statt diesen variablen kram.

                Kommentar


                • #9
                  Original geschrieben von penizillin
                  ... multidimensionale arrays ...
                  *schluck*

                  Habe ich mich noch nicht rangetraut... muss aber nun wohl langsam mal sein.
                  Ich war`s nicht!

                  Kommentar

                  Lädt...
                  X