我有一个包含不同长度的int字段的MySQL表:
如何找出(nav_parent = 4, nav_show = 2, nav_order = 2)
的长度
使用PHP PDO?
答案 0 :(得分:2)
这适用于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
您可以提取长度 [类型] => 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
)
<强>注意:强> 某些字段类型(如日期,日期时间或文本)不会显示值lenght。 示例:时间戳类型的字段将显示“[Type] =&gt; timestamp”,而不是“[Type] =&gt; timestamp(12)”
答案 1 :(得分:1)
SELECT CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE FROM information_schema.columns WHERE TABLE_NAME = 'your_table_name'
了解更多信息check here
答案 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)
}