note 54786 added to function.mysql-field-flags

From: Date: Thu, 14 Jul 2005 23:55:40 +0000
Subject: note 54786 added to function.mysql-field-flags
Groups: php.notes 
Request: Send a blank email to php-notes+get-91996@lists.php.net to get a copy of this message
ok, sorry for the code bloat :) but this is how I get the full power of mysql's DESCRIBE table statement, in an associative array, including defaults, enum values, float radix et all. it assumes mysql returns the type as "type[(arg[,arg..])] [ add]" like "float(20,6) unsigned" "enum('yes','no')" etc <? function getFields($tablename) { $fields = array(); $fullmatch = "/^([^(]+)(\([^)]+\))?(\s(.+))?$/"; $charlistmatch = "/,?'([^']*)'/"; $numlistmatch = "/,?(\d+)/"; $fieldsquery .= "DESCRIBE $tablename"; $result_fieldsquery = mysql_query($fieldsquery) or die(mysql_error()); while ($row_fieldsquery = mysql_fetch_assoc($result_fieldsquery)) { $name = $row_fieldsquery['Field']; $fields[$name] = array(); $fields[$name]["type"] = ""; $fields[$name]["args"] = array(); $fields[$name]["add"] = ""; $fields[$name]["null"] = $row_fieldsquery['Null']; $fields[$name]["key"] = $row_fieldsquery['Key']; $fields[$name]["default"] = $row_fieldsquery['Default']; $fields[$name]["extra"] = $row_fieldsquery['Extra']; $fulltype = $row_fieldsquery['Type']; $typeregs = array(); if (preg_match($fullmatch, $fulltype, $typeregs)) { $fields[$name]["type"] = $typeregs[1]; if ($typeregs[4]) $fields[$name]["add"] = $typeregs[4]; $fullargs = $typeregs[2]; $argsreg = array(); if (preg_match_all($charlistmatch, $fullargs, $argsreg)) { $fields[$name]["args"] = $argsreg[1]; } else { $argsreg = array(); if (preg_match_all($numlistmatch, $fullargs, $argsreg)) { $fields[$name]["args"] = $argsreg[1]; } else die("cant parse type args: $fullargs"); } } else die("cant parse type: $fulltype"); } return $fields; } ?> ---- Manual Page -- http://www.php.net/manual/en/function.mysql-field-flags.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+54786 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+54786&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+54786&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+54786&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+54786&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+54786&report=yes&reason=non-english Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+54786&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+54786&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#91996) next »