2013-11-22 43 views

回答

1
SELECT CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE FROM information_schema.columns WHERE TABLE_NAME = 'your_table_name' 

有關詳細信息check here

+0

NOOP,CHARACTER_MAXIMUM_LENGTH將彈出NULL,也NUMERIC_PRECISION和NUMERIC_SCALE將不會提出我期待的長度(4,1,2) –

1

還有就是getColumnMeta實驗方法。該文檔中提供的例子似乎顯示你是什麼後

<?php 
$select = $DB->query('SELECT COUNT(*) FROM fruit'); 
$meta = $select->getColumnMeta(0); 
var_dump($meta); 
?> 

array(6) { 
    ["native_type"]=> 
    string(7) "integer" 
    ["flags"]=> 
    array(0) { 
    } 
    ["name"]=> 
    string(8) "COUNT(*)" 
    ["len"]=> 
    int(-1) 
    ["precision"]=> 
    int(0) 
    ["pdo_type"]=> 
    int(2) 

}

1

這工作在MySQL,是不是實驗

$result = $this->query('SHOW COLUMNS FROM your_table_name', PDO::FETCH_ASSOC); 

現在你有以下信息:

[Field] => yourfieldname 
[Type] => int(10) 
[Null] => NO 
[Key] => PRI 
[Default] => 
[Extra] => auto_increment 

你c的提取物的lenth形式[類型] => INT(10)

preg_match('/\d+/', $col['Type'], $len); // gives you the number 

全體例如:

$result = $pdo->query('SHOW COLUMNS FROM youTableName'); 

$columLen = array(); 

foreach($result as $key => $col){ 

    preg_match('/\d+/', $col['Type'], $len); // get the number out of 'int(10)' 
    $len = (isset($len[0]))? $len[0] : ''; // is there a length? 
    $fieldname = $col['Field'];    // name of the column 
    $columLen[$fieldname] = $len;   // save it in array 
} 

print_r($columLen); 

輸出:

Array 
(
    [nav_parent] => 4 
    [nav_show] => 1 
    [nav_order] => 2 
) 

注意: 某些字段類型,如日期,日期時間或文本不會顯示價值長度。 示例:類型時間戳的字段將顯示「[類型] =>時間戳」和不「[類型] =>時間戳(12)」

相關問題