mysql Feldlängen auslesen!

alloisxp

Mitglied
Hallo!

Ich versuche über PHP die Längen der Datenbankfelder herauszubekommen.
Ich dachte mit mysql_fetch_field würde es über das Attribut max_length funktionieren, leider jedoch gibt er nur die maximale Länge der bisher eingetragenen werte aus, also wenn alle Felder leer sind haben alle eine länge von 0 ...
Das bringt mir leider gar nichts :(

Wie kriege ich das Adäquat hin?
 
ich glaube das kann dir weiterhelfen

PHP:
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
   echo 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
   exit;
}

// Liefert die Länge des Wertes in email, zum Beispiel
// würde user@example.com die Länge von 16 ergeben
$length = mysql_fetch_len($result, 'email');
echo $length;
?>
 
ich denke mal, was er möchte ist die maximale Anzahl von Zeichen, die er in einer Spalte speichern kann.
also varchar(14) oder varchar(255).

wie's geht weiß ich momentan auch net
 
King of Darkness hat gesagt.:
ich glaube das kann dir weiterhelfen

PHP:
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
   echo 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
   exit;
}

// Liefert die Länge des Wertes in email, zum Beispiel
// würde user@example.com die Länge von 16 ergeben
$length = mysql_fetch_len($result, 'email');
echo $length;
?>
Ich glaub der Befehl heißt mysql_field_len?
 
Hm diese Show Funktion klingt nach dem was ich suche, erstmal danke muss mich da aber noch etwas reinfinden.

Ich suche halt wirklich die maximale Länge des Feldes die man beim erstellen der Tabelle eingibt und nicht wie lang der tatsächlich längste Wert ist in der Spalte, das wüsste ich schon wie das geht.

Hm, nur fühl ich mich gerade nen bischen erschlagen ^^ ganze Menge Infos dort...
Irgend nen Tip wonach ich da genau gucken soll?
 
Zuletzt bearbeitet:
Um deine Suche etwas einzuschränken: Mit folgender Funktion kannst du die Spalteninformationen abfragen:
PHP:
function getTableInfo( $table )
{
	$retVal = array();
	$query = 'SHOW COLUMNS FROM `'.$table.'`';
	$result = mysql_query($query);
	while( $row = mysql_fetch_assoc($result) ) {
		preg_match('/([^()]+)(?:\(([0-9]+)\))?/', $row['Type'], $match);
		$retVal[] = array(
			'Field'   => $row['Field'],
			'Type'    => $match[1],
			'Length'  => $match[2] !== '' ? intval($match[2]) : null,
			'Null'    => $row['Null'] != 'NO',
			'Key'     => empty($row['Key']) ? false : $row['Key'],
			'Default' => $row['Default'],
			'Extra'   => $row['Extra']
		);
	}

	return $retVal;

}
 
Zurück