请参阅http://www.php.net/manual/en/mysqli-result.fetch-fields.php#101828上的评论
NOT_NULL_FLAG = 1
PRI_KEY_FLAG = 2
UNIQUE_KEY_FLAG = 4
MULTIPLE_KEY_FLAG = 8
BLOB_FLAG = 16
UNSIGNED_FLAG = 32
ZEROFILL_FLAG = 64
BINARY_FLAG = 128
ENUM_FLAG = 256
AUTO_INCREMENT_FLAG = 512
TIMESTAMP_FLAG = 1024
SET_FLAG = 2048
PART_KEY_FLAG = 16384
GROUP_FLAG = 32768
NUM_FLAG = 32768
UNIQUE_FLAG = 65536
请注意,上面发布的每个数字都是 2 的幂。(1 = 2^0、2 = 2^1、4 = 2^2 等等)。换言之,它们中的每一个对应于数字中的一位。要阅读什么49967
意思,您可以例如以二进制形式显示它
>> decbin(49967);
'1100001100101111'
从右边开始,您现在可以看到该字段具有以下标志
NOT_NULL
PRI_KEY
UNIQUE_KEY
MULTIPLE_KEY
UNSIGNED
ENUM
AUTO_INCREMENT
GROUP
UNIQUE
检查特定标志的其他方法是使用nickb在下面的评论中&
提供的二元连接运算符和 mysqli 常量:
>> echo MYSQLI_NOT_NULL_FLAG & 49967
1
>> echo MYSQLI_PRI_KEY_FLAG & 49967
2
>> echo MYSQLI_UNIQUE_KEY_FLAG & 49967
4
>> echo MYSQLI_MULTIPLE_KEY_FLAG & 49967
8
>> echo MYSQLI_BLOB_FLAG & 49967
0
基本上,对于已设置的标志,您将获得非零值,对于未设置的标志,您将获得 0。您可以在以下情况下安全地使用它:
if($fieldFlags & MYSQLI_PRI_KEY_FLAG) {
echo 'this field is a primary key';
}