Niels: Wie heißt diese Datenstruktur?

Guten Tag!

Meine Frage bezieht sich auf eine spezielle Datenformatierung, die ich in verschiedenen MySQL-Datenbanken vorgefunden habe. Ich würde mich freuen, wenn mir jemand sagen kann, ob diese Struktur einen bestimmten Namen hat und eventuell, wo ich weitere Informationen dazu finden kann.
Es handelt sich dabei um Text-Felder, die Daten beispielsweise in folgender Form enthalten:
(5 Beispiele aus verschiedenen Tabellen und Datenbanken)

a:1:{i:0;s:3:"all";}

a:2:{s:5:"value";s:1:"2";s:5:"other";s:0:"";}

a:1:{s:13:"administrator";b:1;}

a:1:{i:1;s:1:"6";}

a:6:{i:-1268581451;i:6;i:-1268582223;i:8;i:-1268586648;i:11;i:-1268591449;i:13;i:-1268655382;i:16;i:-1268655912;i:18;}

Meine eigenen Überlegungen dazu sind die:
Das "a" zu Beginn steht für "Array", das "s" für "String" und das "b" für "Boolean".
Die erste Zahl nach dem "s" gibt die Länge des Strings an, der String selbst steht in Anführungszeichen dahinter.
Leider lässt sich der Gedanke mit der Längenangabe nicht auch auf die Arrays anwenden.

Ich freue mich auf jede weitere Information dazu!
Herzlichen Dank im Voraus,

Niels

  1. Hello,

    Meine Frage bezieht sich auf eine spezielle Datenformatierung, die ich in verschiedenen MySQL-Datenbanken vorgefunden habe.

    a:1:{i:0;s:3:"all";}

    a:2:{s:5:"value";s:1:"2";s:5:"other";s:0:"";}

    a:1:{s:13:"administrator";b:1;}

    a:1:{i:1;s:1:"6";}

    a:6:{i:-1268581451;i:6;i:-1268582223;i:8;i:-1268586648;i:11;i:-1268591449;i:13;i:-1268655382;i:16;i:-1268655912;i:18;}

    Das sind seialisierte PHP-Arrays, also serialisierte Baumstrukturen.
    siehe http://de.php.net/manual/de/function.serialize.php
    und   http://de.php.net/manual/de/function.unserialize.php

    Ob es nun geschickt oder ungeschickt ist, Arrays seialisiert abzuspeichern, müsste untersuchen. Meistens fehlen einfach mehrere eigenen Tballen für eine saubere Datenhaltung.

    Mit der Datenbank hat dies aber erstmal nichts zu tun.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. Hi,

    Meine Frage bezieht sich auf eine spezielle Datenformatierung, die ich in verschiedenen MySQL-Datenbanken vorgefunden habe. Ich würde mich freuen, wenn mir jemand sagen kann, ob diese Struktur einen bestimmten Namen hat und eventuell, wo ich weitere Informationen dazu finden kann.
    Es handelt sich dabei um Text-Felder, die Daten beispielsweise in folgender Form enthalten:
    (5 Beispiele aus verschiedenen Tabellen und Datenbanken)

    a:1:{i:0;s:3:"all";}

    a:2:{s:5:"value";s:1:"2";s:5:"other";s:0:"";}

    a:1:{s:13:"administrator";b:1;}

    a:1:{i:1;s:1:"6";}

    Das sieht nach serialisierten Daten aus, vermutlich von PHPs serialize() erstellt.

    Meine eigenen Überlegungen dazu sind die:
    Das "a" zu Beginn steht für "Array", das "s" für "String" und das "b" für "Boolean".
    Die erste Zahl nach dem "s" gibt die Länge des Strings an, der String selbst steht in Anführungszeichen dahinter.
    Leider lässt sich der Gedanke mit der Längenangabe nicht auch auf die Arrays anwenden.

    Ja, so in etwa funktioniert das.
    Schau dir einfach mal mit ein paar Beispieldaten an, was serialize daraus macht.

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
  3. Moin!

    Meine Frage bezieht sich auf eine spezielle Datenformatierung, die ich in verschiedenen MySQL Datenbanken vorgefunden habe.

    Das sind PHP-serialisierte Variablen.

    http://www.php.net/serialize

    Meine eigenen Überlegungen dazu sind die:
    Das "a" zu Beginn steht für "Array", das "s" für "String" und das "b" für "Boolean".
    Die erste Zahl nach dem "s" gibt die Länge des Strings an, der String selbst steht in Anführungszeichen dahinter.
    Leider lässt sich der Gedanke mit der Längenangabe nicht auch auf die Arrays anwenden.

    Doch. Die Zahl hinter A gibt die Anzahl an Arrayelementen an, und zwar jeweils Key und Value.

    - Sven Rautenberg

    1. Hallo,

      Das sind PHP-serialisierte Variablen.

      http://www.php.net/serialize

      Meine eigenen Überlegungen dazu sind die:
      Das "a" zu Beginn steht für "Array", das "s" für "String" und das "b" für "Boolean".
      Die erste Zahl nach dem "s" gibt die Länge des Strings an, der String selbst steht in Anführungszeichen dahinter.
      Leider lässt sich der Gedanke mit der Längenangabe nicht auch auf die Arrays anwenden.

      Doch. Die Zahl hinter A gibt die Anzahl an Arrayelementen an, und zwar jeweils Key und Value.

      s.a. :

      <?php
      var_dump(unserialize('a:1:{i:0;s:3:"all";}'));

      Gruß

      jobo

  4. Vielen Dank,

    das haut mich ja vom Hocker, wie schnell das bei euch geht!
    Herzliche Grüße aus Berlin,

    Niels

    1. Hallo,

      das haut mich ja vom Hocker, wie schnell das bei euch geht!
      Herzliche Grüße aus Berlin,

      mit den Jahren spricht sichs rum (;-).

      Gruß

      jobo