SQL-Array (!) mit PHP aus DB auslesen

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

  • SQL-Array (!) mit PHP aus DB auslesen

    Hallo!

    Kann mir jemand sagen, wie ich ein Array aus einer DB auslese?? Nein, nicht eine ganze Reihe einer DB als Array, sondern eine Spalte ist vom Typ Array. Der Table wird mit:

    create table xyz (zeit timestamp, wert int[ ])

    erstellt. Ich verwende eine PostgreSQL DB. Ich wollte jetzt die Werte zu einem bestimmten Zeitpunkt haben und weiter bearbeiten. Wie gross das Array ist, weis ich (z.B. 512).

    $res = pg_query ("select wert from xyz where zeit = '....' ");
    $arr = pg_fetch_array ($res, 0);
    $subarr = $arr[0];

    Nur geht das nicht. $subarr ist kein Array. Weis jemand, wie ich an die einzelnen Werte aus dem SQL-Array herankomme?

  • #2
    kommt drauf an, wie du das array in die db geschrieben hast

    wenn du es mit serialize geschrieben hast, kannst du es mit unserialize wieder umwandeln

    php unterstützt den postgresql-datentyp array nicht afaik


    da musst du dir entweder mit serilaize/unserialize behelfen (wäre dann einstring)

    oder eine weitere tabelle erstellen, in der du die array-werte hast (normalisiert eben )
    Zuletzt geändert von mrhappiness; 28.10.2003, 08:13.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Als erstes solltest du mal die Leerzeichen hinter pg_query und pg_fetch_array wegmachen und dann weitersehen.
      EDIT:
      Ist heut echt gutes Timing mit Dir mrhappiness
      it's not a bug,
      it's a feature!

      Kommentar


      • #4
        Original geschrieben von XGremliN
        Als erstes solltest du mal die Leerzeichen hinter pg_query und pg_fetch_array wegmachen und dann weitersehen.
        wenn das falsch wäre, dann müsste es doch einen perse error geben oder?

        ich kann soviel leerzeichen zwischen funktionsname und klammer machen wie ich will
        EDIT:
        Ist heut echt gutes Timing mit Dir mrhappiness
        ich weiß
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Als erstes solltest du mal die Leerzeichen hinter pg_query und pg_fetch_array wegmachen und dann weitersehen.
          Sehr hilfreich! Die Leerzeichen habe ich übrigens nur zur Übersichtlichkeit hier im Text reingehauen.


          wenn du es mit serialize geschrieben hast, kannst du es mit unserialize wieder umwandeln
          Bin mir nicht sicher, wie das geht!? Die Werte werden übrigens nicht mit PHP, sondern mit C++ in die DB geschrieben.

          Kommentar


          • #6
            keine ahnung, wie das c++ - äquivalent dazu heißt

            ne beschreibung der funktionen gibt's bei www.php.net/manual/de

            aber du solltest dir wirklich überlegen, für jeden eintrag in deinem array einen neuen datensatz zu machen

            wie sieht die datenbankstruktur denn jetzt aus?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Die besagte Tabelle sieht wie folgt aus:

              Spalte | Typ | Attribute
              --------+-----------------------------+-----------
              zeit | timestamp without time zone |
              wert | real[] |
              error | integer[] |

              Es gibt doch noch unter SQL etwas Vergleichbares zu Arrays!?? "sets" oder so, wenn ich mich recht erinnere! Ich nehme aber mal an, dass das auch nicht von PHP unterstützt wird!?

              Kommentar


              • #8
                Wie würde das denn aussehen, wenn ich mit PHP die Daten per unserialize wieder umwandeln könnte?

                Kommentar


                • #9
                  $array = unserialize($spalte);

                  aber das geht nur, wenn du vorher $spalte = serialize($array); gemacht hast

                  mit SET als datentyp sollte es aber gehen

                  aber wenn ich mich recht erinnere sieht dein error int[] dann so aus oder? (1, 4, 7, 23, 3)

                  sollte das so sein, mach einfach
                  PHP-Code:
                  $fehler=explode(','$spalte); 
                  dann hast du dein array
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Es klappt leider nicht mit serialize()

                    ... notfalls muss ich halt 512x mit

                    "select wert [ i ] from xyz" die Werte einzeln herausholen. Leider geht "select wert[*] from xyz" nicht :-)... oder ich packe alle Werte in je eine Spalte, aber das gefällt mir nicht sonderlich. (sets scheint PostgreSQL nicht zu unterstützen)

                    Mal gucken. Auf jeden Fall danke für die Hilfe!

                    Kommentar


                    • #11
                      wie sieht's denn in der spalte aus?
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Original geschrieben von AL_
                        ... notfalls muss ich halt 512x mit

                        "select wert [ i ] from xyz" die Werte einzeln herausholen. Leider geht "select wert[*] from xyz" nicht :-)... oder ich packe alle Werte in je eine Spalte, aber das gefällt mir nicht sonderlich.
                        irgendwie habe ich den eindruck, dass du das erstellen von sinnvollen datenmodellen noch nicht so ganz drauf hast.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          irgendwie habe ich den eindruck, dass du das erstellen von sinnvollen datenmodellen noch nicht so ganz drauf hast.
                          Danke! Ich liebe diese tollen und absolut unnützen Antworten. Aber so ganz nebenbei, der Entwurf für die Tabelle habe ich nicht vorgegeben! Mach doch einen besseren Vorschlag!!

                          wie sieht's denn in der spalte aus?
                          ?? Du meinst, was für Werte drinn stehen? 512 int bzw. Float-Werte!

                          Kommentar


                          • #14
                            Original geschrieben von AL_
                            Du meinst, was für Werte drinn stehen?
                            ja und vor allem: wie sind die einzelnen werte dadrin voneinander getrennt?
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Achso, hier mal ein Beispiel (nicht alle 512 Werte):

                              {-0.0925611,-0.453756,-0.381539,0.0519926,0.341229,-0.
                              525963,0.703019,209.595,205.334,206.005,200.829,201.825, usw. }

                              d.h. wenn ich an den String käme, könnte ich ja ganz einfach die Werte trennen (wegen ",") und in ein PHP-Array packen... komm aber nicht dran!

                              Kommentar

                              Lädt...
                              X