Antworten auf deine Fragen:
Neues Thema erstellen

PgSQL Array in echtes Array umwandeln

S

SierraLeon

Guest

Hallo zusammen,
ich steh seit gestern abend vor einem Problem und komm einfach nicht dahinter. Habe schon wie wild gegoogelt aber auch da leider nichts gefunden, scheinbar ist das allen klar, nur mir nicht xD

Ich nutze PostgreSQL als Datenbanksystem, darum weiß ich nichtob bei MySQL das überhaupt möglich ist. Egal ich hoffe ihr könnt mir trotzdem helfen.

Ich speichere mit:

PHP:
@pg_query("UPDATE mg_user
            SET ASammlung = ARRAY[".$AlbID."],
                ISammlung = ARRAY[".$InterID."]
            WHERE ID = '".$UserID."'") OR
          die(pg_last_error());

in das Feld ISammlung und ASammlung jeweils ein Array, das im Moment nur einen Wert hat aber später noch erweitert werden wird.
Wenn ich nun mit:

PHP:
$getSammlungen = @pg_query("SELECT
                              ASammlung, ISammlung
                             FROM mg_user
                             WHERE ID = '".$UserID."'") OR
                      die(pg_last_error());
 $fetchSammlungen = pg_fetch_assoc($getSammlungen);

diese beiden Arrays wieder abrufe bekomme ich als Rückgabewert einen String. Beispielsweise {12}. Also sieht das Array dann später z.B. so aus: {12, 17, 44, 2}.
Jetzt kann ich mit diesem String nicht übermäßig viel anfangen in PHP. Also ist die Frage: Wie wandle ich diesen String mit den geschweiften Klammern in ein Array um ?
Ich hab dafür bereits explode(), eval() und un******ize() probiert aber keins davon hat wirklich geklappt. Könntet ihr mir helfen ?

Bereits jetzt danke für die Hilfe :)

Liebe Grüße
SierraLeon
 

Rakete

Nicht mehr ganz neu hier

AW: PgSQL Array in echtes Array umwandeln

Wieso sollte das nicht per explode() - mit Trennzeichen "," - funktionieren? Was ist da schiefgegangen?
 
S

SierraLeon

Guest

AW: PgSQL Array in echtes Array umwandeln

Dabei werden die geschweiften Klammern am Anfang und am Ende nicht entfernt.
Das heißt der erste Eintrag des Arrays sieht dann z.B. so aus: {12 und der letzte: 22}

Das ist das Problem.
 

EnricoS

Nicht mehr ganz neu hier

AW: PgSQL Array in echtes Array umwandeln

Naja mit substr ($zeichenkette, 1, -1) solltest du alles außer {} haben und explode macht den Rest.
Dein Query sollte doch aber schon ein Array zurückgeben???

Gruß
Enrico
 

Rakete

Nicht mehr ganz neu hier

AW: PgSQL Array in echtes Array umwandeln

...und wenn du möchtest, dass dem Server schön warm ist, erreichst du das gleiche Ergebnis mit:

PHP:
$string='{1,2,3,4}';

preg_match("/{([^}]+)}/",$string,$match);
                                                                
echo $match[1];
Wobei $match[1] dann 1,2,3,4 enthält.
 
S

SierraLeon

Guest

AW: PgSQL Array in echtes Array umwandeln

Das ist toll, dass du das grade ansprichst :)
Könntest du die Vorgehensweise bei preg_match mal erklären ? Ich hab das zwar bei php.net gelesen und auch schon ein paar mal sonst ein bisschen was drüber gelesen, aber nie verstanden was da genau passiert und für was, was steht.

Also wenn du könntest: Einfach mal die Zeile Schritt für Schritt durch erklären ?
PHP:
preg_match("/{([^}]+)}/",$string,$match);

Und was genau gibt preg_match dann aus ?

Liebe Grüße
SierraLeon
 

r3nt5ch3r

~ Allround pG ~

AW: PgSQL Array in echtes Array umwandeln

dein ansatz war schon "richtig"...
noch richtiger wäre es keine array in sql zu speichen - so ne doofe idee hab ich ja noch nie gesehen xD

PHP:
$arrayString = '{1,2,3,4}';
$arrayString = substr($arrayString, 1, strlen($arrayString));
$arrayString = substr($arrayString, 0, -1);
$array = explode(',', $arrayString);
print_r($array);
 
S

SierraLeon

Guest

AW: PgSQL Array in echtes Array umwandeln

Warum ist das ne doofe Idee ? Wenn ich mehrere Dinge in ein Feld speichern muss, fällt mir jedenfalls nichts anderes ein als ein Array oder ?
 

r3nt5ch3r

~ Allround pG ~

AW: PgSQL Array in echtes Array umwandeln

Warum ist das ne doofe Idee ? Wenn ich mehrere Dinge in ein Feld speichern muss, fällt mir jedenfalls nichts anderes ein als ein Array oder ?
Wenn du schon sowas machen WILLST/MUSST dann nehm s-erialize() (ohne "-") um ein PHP-Array als Text oder Varchar zu speichern^^ (dann bleibst du im Bereich der PHP-Datentypen und musst nicht rumkonvertieren; s-erialize ist außerdem performanter als das gedöns was ich gepostet hab -> außerdem bietets dir mehr möglichkeiten^^)
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.564
Beiträge
1.538.064
Mitglieder
67.487
Neuestes Mitglied
MichaelSEivy
Oben