Bobby: MySQL -> PHP -> Daten im Format BIT()

Moin

eine Verständnisfrage. Ich habe eine Datenbanktabelle. In dieser gibt es ein Datenfeld 'xyz' vom Typ BIT(2). Ziel ist es eine kleine Bitmaske zu etablieren.

Diese Tabelle lege ich nun bei verschiedenen Hostern ab. Da tauchen Unterschiede auf. Beim einen Hoster muss ich die Daten aus dem Feld 'xyz' mit der PHP-Funktion ord() behandeln um die Bitmaske zu bekommen. Beimn anderen Anbieter wird dies bereits automatisch erledigt.

Nun meine Fragen:

1. Ist das irgendwo einstellbar? Ich habe dies nicht gefunden.
2. Gibt es eine Möglichkeit um das vorher abzufragen, damit ich entscheiden kann ob die Daten mit ord() behandelt werden müssen oder nicht.

An der Version sollte es nicht liegen, da das automatische Umwandeln bei MySQL-Version 5.0.XX und 5.5.XX auftritt und im Gegesatz zu V 5.2.XX bei der ich die Daten mit ord() behandeln muss.

Also, wer kann mir nen Schubs in die richtige Richtung geben?

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. Tach!

    Diese Tabelle lege ich nun bei verschiedenen Hostern ab. Da tauchen Unterschiede auf. Beim einen Hoster muss ich die Daten aus dem Feld 'xyz' mit der PHP-Funktion ord() behandeln um die Bitmaske zu bekommen. Beimn anderen Anbieter wird dies bereits automatisch erledigt.

    Konkret was behandelst du da? Hast du dir die beiden Varianten mit var_dump() ausgeben lassen?

    dedlfix.

    1. Moin

      Konkret was behandelst du da? Hast du dir die beiden Varianten mit var_dump() ausgeben lassen?

      ok, konkreter. Ich hab ein BIT Feld mit einer Länge von 2

      die Einträge sehen z.B. so aus:

      xyz=01

      das wären jetzt mal 3 Datensätze die ich mir per mysqli aus der Datenbank auslese.

      bei den einen Systemen kommt der Wert wie folgt zurück:

      ["xyz"]=>int(49) (als wäre es mit ord() behandelt)

      beim anderen

      ["xyz"]=>int(1) (als ob bereits mit chr() behandelt)

      Sozusagen wird beim einen der Datensatz als Ascii-Ordnungszahl beim anderen als int-Wert zurückgegeben.

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  2. Hi,

    Diese Tabelle lege ich nun bei verschiedenen Hostern ab. Da tauchen Unterschiede auf. Beim einen Hoster muss ich die Daten aus dem Feld 'xyz' mit der PHP-Funktion ord() behandeln um die Bitmaske zu bekommen. Beimn anderen Anbieter wird dies bereits automatisch erledigt.

    http://gphemsley.wordpress.com/2010/02/08/php-mysql-and-the-bit-field-type/

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Moin

      http://gphemsley.wordpress.com/2010/02/08/php-mysql-and-the-bit-field-type/

      Danke Danke... also Cast im SQL... und es funktioniert tatsächlich... KAnn man das irgendwie automatisieren?

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)