note 20857 added to function.mysql-fetch-field
| From: | justin at quadmyre dot com | Date: | Thu, 18 Apr 2002 21:00:12 +0000 |
| Subject: | note 20857 added to function.mysql-fetch-field | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-29538@lists.php.net to get a copy of this message | ||
Same problem, slightly different solution.
$result = mysql_query("DESCRIBE tablename");
# or SHOW COLUMNS FROM
# or SHOW FIELDS FROM
then loop:
$row = mysql_fetch_array($result);
# row is mysql type, in format "int(11) unsigned zerofill"
# or "enum('cheese','salmon')" etc.
ereg('^([^ (]+)(\((.+)\))?([ ](.+))?$',$row['Type'],$fieldTypeSplit);
# split type up into array
$fieldType = $fieldTypeSplit[1]; # eg 'int' for integer.
$fieldFlags = $fieldTypeSplit[5]; # eg 'binary' or 'unsigned zerofill'.
$fieldLen = $fieldTypeSplit[3]; # eg 11, or 'cheese','salmon' for enum.
You might then like to:
if ($fieldType=='enum' or $fieldType=='set')
$fieldLen = split("','",substr(1,-1,$fieldLen));
So for enum or set types, $fieldLen becomes an array of possible values.
Hope that helps someone out there...
--
http://www.php.net/manual/en/function.mysql-fetch-field.php
http://master.php.net/manage/user-notes.php?action=edit+20857
http://master.php.net/manage/user-notes.php?action=delete+20857
http://master.php.net/manage/user-notes.php?action=reject+20857