• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datentyp checken

Mad Dog

Mitglied
Hey liebe Community,

ich habe da eine kleine Verständnissfrage.

Und zwar geht es darum, dass ich $_POST Variablen vor dem Eintragen in die Datenbank in den richtigen Datentyp umwandeln will.

Wenn ich jetzt ein SELECT Statement ausführe bekomm ich ein Object der Klasse Mysqli_Result. In dieser Klasse gibt es einen Befehl fetch_field zum fetchen der selectieren Daten.

Soweit so gut. Jetzt besitzt das Object mehrere Keys.
name The name of the column orgname Original column name if an alias was specified table The name of the table this field belongs to (if not calculated) orgtable Original table name if an alias was specified max_length The maximum width of the field for the result set. length The width of the field, as specified in the table definition. charsetnr The character set number for the field. flags An integer representing the bit-flags for the field. type The data type used for this field decimals The number of decimals used (for integer fields)
Bin ich jetzt richtig in der Annahme, dass type mir den Datentyp einer bestimmen Spalte liefert?

Hier z.b. mein Code:
Code:
        public function checkTyp($attr) {
          $sql = "SELECT ".$attr." FROM advanced_profil";

            if ($result = self::$_DB->query($sql)) {
              while ($finfo = $result->fetch_field()) {
            $check['type'] = $finfo->type;
            $check['max_length'] = $finfo->max_length;
              }
            }
            return $check;
        }
$check['type'] wird dann den Typ der Spalte $attr beinhalten?
ich bin ein bisschen durcheinander gekommen mit den ganzen Typen...

1EDIT:
Habe vergessen die var_dump ausgabe zu posten, welche mich ein bisschen verwirrt:
array(2) { ["type"]=> int(3) ["max_length"]=> int(1) }
eigentlich heisst das ja das 'type' einen Integer Wert enthält, eine 3 oder?!?

/EDIT
2EDIT:
Wenn ich das jetzt richtig verstanden habe, steht die 3 also für den Type "int" und eine 8 für "bigint". Jedoch macht Max_length für mich noch keinen Sinn, da ich es an einer Spalte getestet habe und als max_length 2 angegeben habe...

/EDIT

Gibt es noch eine bessere Möglichkeit den Datentyp einer Spalte zu überprüfen??

mfg
Mad Dog
 
Zuletzt bearbeitet:
Werbung:
Hey liebe Community,

ich habe da eine kleine Verständnissfrage.

Und zwar geht es darum, dass ich $_POST Variablen vor dem Eintragen in die Datenbank in den richtigen Datentyp umwandeln will.

Wenn ich jetzt ein SELECT Statement ausführe bekomm ich ein Object der Klasse Mysqli_Result. In dieser Klasse gibt es einen Befehl fetch_field zum fetchen der selectieren Daten.

Soweit so gut. Jetzt besitzt das Object mehrere Keys.
Bin ich jetzt richtig in der Annahme, dass type mir den Datentyp einer bestimmen Spalte liefert?
Ja


$check['type'] wird dann den Typ der Spalte $attr beinhalten?
Ja.

Habe vergessen die var_dump ausgabe zu posten, welche mich ein bisschen verwirrt:
eigentlich heisst das ja das 'type' einen Integer Wert enthält, eine 3 oder?!?
Steht doch da :)

Wenn ich das jetzt richtig verstanden habe, steht die 3 also für den Type "int" und eine 8 für "bigint".
In gewissem Sinne ja. Jedoch könnte (mit Betonung auf könnte) das implementationstechnisch Bedingt sein. Stattdessen die Typen symbolisch vergleichen, also mit Konstanten.

Jedoch macht Max_length für mich noch keinen Sinn, da ich es an einer Spalte getestet habe und als max_length 2 angegeben habe...
Es heisst, dass von allen Werten die du für diese Spalte in der jetzigen Abfrage zurückbekommen hast, alle 2 oder weniger Zeichen lang sind.

Gibt es noch eine bessere Möglichkeit den Datentyp einer Spalte zu überprüfen??
Es ist sicherlich nicht klug, alle Werte anzufordern, nur um sie sofort wieder zu verwerfen ;)
Du kannst auch mit DESCRIBE oder so arbeiten.

Die Konstanten die du benötigst, sind hier zu finden:
MYSQLI_TYPE_*
PHP: Predefined Constants - Manual
 
Werbung:
Zurück
Oben