0,'max'=>255); else $fields[$rowb['Field']]=array('min'=>-128,'max'=>127); break; case 'smallint': if (array_key_exists(3,$buf)) $fields[$rowb['Field']]=array('min'=>0,'max'=>65535); else $fields[$rowb['Field']]=array('min'=>-32768,'max'=>32767); break; case 'mediumint': if (array_key_exists(3,$buf)) $fields[$rowb['Field']]=array('min'=>0,'max'=>16777215); else $fields[$rowb['Field']]=array('min'=>-8388608,'max'=>8388607); break; case 'int': if (array_key_exists(3,$buf)) $fields[$rowb['Field']]=array('min'=>0,'max'=>4294967295); else $fields[$rowb['Field']]=array('min'=>-2147483648,'max'=>2147483647); break; // bigint non ci sta in php a meno di usare bcmath o gmp che non è detto siano abilitate sul server, in ogni caso poco importa perché valori bigint vengono usati solo internamente al db, non "vengono da fuori" case 'bigint': if (array_key_exists(3,$buf)) $fields[$rowb['Field']]=array('min'=>'0','max'=>'18446744073709551615'); else $fields[$rowb['Field']]=array('min'=>'-9223372036854775808','max'=>'9223372036854775807'); break; case 'decimal': // questo è da testare contro un decimale vero // fatto, il risultato è che in mysql devo usare decimal(14,4) if (preg_match('/,/',$buf[2])===1) { $lim=explode(',',$buf[2]); } else { $lim[0]=$buf[2]; $lim[1]=0; } $int=$lim[0]-$lim[1]; $sint=''; for ($i=0; $i<$int; $i++) $sint.='9'; $sdec=''; for ($i=0; $i<$lim[1]; $i++) $sdec.='9'; $max=$sint.'.'.$sdec; if (array_key_exists(3,$buf)) $fields[$rowb['Field']]=array('min'=>0,'max'=>floatval($max)); else $fields[$rowb['Field']]=array('min'=>floatval('-'.$max),'max'=>floatval($max)); break; default: $fields[$rowb['Field']]=$rowb['Type']; break; } } elseif ($rowb['Type']=='text') { $fields[$rowb['Field']]=65535; } else { $fields[$rowb['Field']]=$rowb['Type']; } } $tables[$row[0]]=$fields; } return($tables); } ?>