Feldlängeherausfinden
am 19.12.2004 20:24:10 von Erik Griffin
Hallo!
Wie kann ich mir die maximale Länge die ein Feld haben darf über den
Feldnamen zurückgeben lassen. Ich möchte also den Wert auslesen der in
der DB die maximale Breite definiert und das über den Feldnamen.
Wenn ich z.B. folgende Tabelle habe
| CREATE TABLE Bla {
| Test varchar(50)
| }
Hätte ich gerne eine Funktion X die mir bei
| echo X("Test")
Die Zahl 50 ausgibt. Habe dazu leider nix unter den mysqli_* Funktionen
in der Doku gefunden :S.
mfg
Erik
PHP-Version 5.0.3, mySQL-Version momentan 4.0.12-nt
Re: Feldlänge herausfinden
am 19.12.2004 20:46:19 von Niels Braczek
Erik Griffin <1f4e5381573d4a9c00e0b61302a4167f@nurfuerspam.de> schrieb:
> Hallo!
>
> Wie kann ich mir die maximale Länge die ein Feld haben darf über den
> Feldnamen zurückgeben lassen. Ich möchte also den Wert auslesen der in
> der DB die maximale Breite definiert und das über den Feldnamen.
> [...]
> Die Zahl 50 ausgibt. Habe dazu leider nix unter den mysqli_*
> Funktionen in der Doku gefunden :S.
Eine solche Funktion solltest du nicht im PHP-, sondern im MySQL-Manual
suchen.
MfG
Niels
--
IcH fInDe AuCh, dAsS eS nIcHt So WiChTig IsT, eInEn TeXt In KoRrEcKtEr
gRoSs- Und KlEiNsChReIbUnG zU vErFaSsEn, Da DiEs DeR LeSbArKeIt KaUm
AbBrUcH tUt UnD zUdEm AuSdRuCk MeInEr InDiViDuAlItAeT iSt.
[Joachim Kromm in dsnu]
Re: Feldlänge herausfinden
am 19.12.2004 23:01:59 von Hartmut Holzgraefe
Niels Braczek wrote:
> Eine solche Funktion solltest du nicht im PHP-, sondern im MySQL-Manual=
> suchen.
Warum das?
Meta-Informationen wie Feldname, Typ und Größe sind Teil jedes Result=
sets
und direkt über entsprechende PHP-Funktionen (sowohl in ext/mysql als a=
uch
in ext/mysqli) verfügbar.
In diesem Fall also einmal ein fröhliches PRTFM an den Antwortenden ;)
(P für 'please', soviel Zeit muss sein ...)
Re: Feldlänge herausfinden
am 19.12.2004 23:04:44 von Hartmut Holzgraefe
Erik Griffin wrote:
> Hallo!
>=20
> Wie kann ich mir die maximale Länge die ein Feld haben darf über de=
n=20
> Feldnamen zurückgeben lassen. Ich möchte also den Wert auslesen der=
in=20
> der DB die maximale Breite definiert und das über den Feldnamen.
Siehe http://php.net/mysqli-fetch-fields
Re: Feldlängeherausfinden
am 23.12.2004 23:26:37 von Erik Griffin
* Hartmut Holzgraefe schrieb:
> Erik Griffin wrote:
>> Hallo!
>>
>> Wie kann ich mir die maximale Länge die ein Feld haben darf über den
>> Feldnamen zurückgeben lassen. Ich möchte also den Wert auslesen der in
>> der DB die maximale Breite definiert und das über den Feldnamen.
>
> Siehe http://php.net/mysqli-fetch-fields
Diese Funktion gibt leider nicht das zurück, was ich oben gern hätte!
Habe das Beispiel wie in der Doku beschrieben mal übernommen und
ausprobiert:
....
for ($i=0; $i < count($finfo); $i++) {
printf("Name: %s
\n", $finfo[$i]->name);
printf("Table: %s
\n", $finfo[$i]->table);
printf("max. Len: %d
\n", $finfo[$i]->max_length);
printf("Flags: %d
\n", $finfo[$i]->flags);
printf("Type: %d
\n\n", $finfo[$i]->type);
}
....
max_length gibt hierbei die maximale Länge aller Einträge in einer
Spalte zurück, nicht aber die maximal mögliche Länge wie sie in der
Tabelle definiert wurde!!!
mfg
Erik
Re: Feldlängeherausfinden
am 23.12.2004 23:28:57 von Erik Griffin
* Hartmut Holzgraefe schrieb:
> Niels Braczek wrote:
>> Eine solche Funktion solltest du nicht im PHP-, sondern im MySQL-Manual
>> suchen.
Hm... wäre auch ok, hast Du da zufällig einen Tip?
> Warum das?
>
> Meta-Informationen wie Feldname, Typ und Größe sind Teil jedes Resultsets
> und direkt über entsprechende PHP-Funktionen (sowohl in ext/mysql als auch
> in ext/mysqli) verfügbar.
>
> In diesem Fall also einmal ein fröhliches PRTFM an den Antwortenden ;)
> (P für 'please', soviel Zeit muss sein ...)
Das habe ich auch vorher schon getan. Ich habe unter anderem (auch vor
Deinem Tip) folgende über folgende Funktionen versucht diese Information
auszulesen:
mysqli_fetch_field
mysqli_fetch_lengths
mysqli_fetch_field_direct
mysqli_fetch_array
mfg
Erik
Re: Feldlänge herausfinden
am 24.12.2004 00:54:19 von Niels Braczek
Erik Griffin <1f4e5381573d4a9c00e0b61302a4167f@nurfuerspam.de> schrieb:
> * Hartmut Holzgraefe schrieb:
>> Niels Braczek wrote:
>>> Eine solche Funktion solltest du nicht im PHP-, sondern im
>>> MySQL-Manual suchen.
>
> Hm... wäre auch ok, hast Du da zufällig einen Tip?
Wonach hast du gesucht, wenn du SHOW COLUMNS oder DESCRIBE nicht auf
Anhieb gefunden hast?
MfG
Niels
--
Gib einem Hungrigen einen Fisch, und er ist für einen Tag satt.
Zeig ihm, wie man angelt, und er pöbelt Dich an, dass er besseres
zu tun hätte, als Schnüre ins Wasser hängen zu lassen.
[David Kastrup in de.comp.text.tex]
Re: Feldlänge herausfinden
am 24.12.2004 16:00:54 von Hartmut Holzgraefe
Erik Griffin wrote:
> Das habe ich auch vorher schon getan. Ich habe unter anderem (auch vor =
> Deinem Tip) folgende über folgende Funktionen versucht diese Informat=
ion=20
> auszulesen:
>=20
> mysqli_fetch_field
> mysqli_fetch_lengths
> mysqli_fetch_field_direct
> mysqli_fetch_array
ok, noch mal langsam zum mitschreiben:
(weil Weihnachten ist ;)
function field_len($table, $field) {
$query =3D "SELECT $field FROM $table LIMIT 0";
$res =3D mysql_query($query);
$info =3D mysql_fetch_field($res)
mysql_free_result($res);
return $info->max_length;
}
Re: Feldlänge herausfinden
am 24.12.2004 16:05:41 von Hartmut Holzgraefe
Erik Griffin wrote:
> max_length gibt hierbei die maximale Länge aller Einträge in einer =
> Spalte zurück, nicht aber die maximal mögliche Länge wie sie in d=
er=20
> Tabelle definiert wurde!!!
Tatsache! Man lernt ja nie aus ... :/
Dann bleibt zZ. tatsächlich nur der Weg über die Auswertung von
DESCRIBE TABLE oder SHOW CREATE TABLE