mysql_fetch_field() 函数可以用来获取字段信息,定义如下:
[Plain Text] 纯文本查看 复制代码 object mysql_fetch_field ( resource $result [, int $field_offset ] )
第 1 个参数 $result 是资源标识符。
第 2 个参数 $field_offset 是个可选参数,表示字段的序号, 0 表示第一个字段,1 表示第二个字段,依此类推,如果省略,那么表示取得当前的字段。
函数的返回值为 object 类型,包含的属性如下表所示:
属性 | 说明
| name | 字段名
| table | 字段所属的数据表名
| max_length | 字段内容实际存放的最大长度,不是数据库内设置的数据长度
| not_null | 字段内容是否允许为NULL,如果返回1,表示不允许为 NULL
| primary_key | 字段是否为主键,如果返回1,表示为主键
| unique_key | 字段是否为唯一键(unique key),如果返回1,表示唯一键
| multiple_key | 字段是否为多重键(multiple key), 如果返回1,表示为多重键
| numeric | 字段类型是否为数值类型,如果返回1,那么为数值类型
| blob | 字段类型是否为 BLOB 类型,如果返回 1,表示为 BLOB 类型
| type
| 字段类型
| unsigned
| 字段是否为无符号(unsigned),如果返回1,表示为无符号
| zerofill
| 字段是否会自动补0(zerofill),如果返回1,表示会自动补0
|
如果要获取第 2 个字段的信息,那么可以写成:
[Plain Text] 纯文本查看 复制代码 $meta = mysql_fetch_fiedl($result, 1);
如果要取得第 2 个字段信息并显示其字段名及数据类型,可以如下写法:
[Plain Text] 纯文本查看 复制代码 $meta = mysql_fetch_field($result, 1);
echo "字段名: $meta->name";
echo "数据类型:$meta->type";
测试代码:
[PHP] 纯文本查看 复制代码 <?php
require_once("dbfuncs.php");
$link = create_connection();
$sql = "SELECT * FROM `pw_hack` WHERE `hk_value` = 10";
$result = execute_sql("pw87", $sql, $link);
echo "<table width='400' border='1'> <tr align='center'>";
echo "<th>字段名</th><th>数据类型</th><th>最大长度</th></tr>";
$i = 0;
while ($i < mysql_num_fields($result)) {
$meta = mysql_fetch_field($result, $i);
echo "<tr>";
echo "<td>$meta->name</td>";
echo "<td>$meta->type</td>";
echo "<td>$meta->max_length</td>";
echo "</tr>";
$i++;
}
echo "</table>";
mysql_close($link);
?>
运行输出:
BLOB 类型介绍
BLOB 是 Binary Large Object 的缩写,即二进制大对象,是一个可以存储大量二进制数据的容器。MySQL 有 4 种 BLOB 类型:
类型 | 大小(字节)
| TinyBlob | 最大 255 | Blob | 最大 65K | MediumBlob | 最大 16M | LongBlob | 最大 4G |
这四种类型除了允许的最大值不同外,没有其他区别;实际使用中根据需要存入的数据大小定义不同的BLOB类型。 |