当前位置: 首页 > 面试题库 >

mysqli中的位标志使用fetch_field_direct是什么意思

宫弘亮
2023-03-14
问题内容

使用mysqli,我可以获得类似这样的字段的信息

$field = mysqli_fetch_field_direct($result, $fieldCount);

我可以使用以下方法从结果中获取字段标志

$field->flags

PHP手册说,这将返回“一个表示该字段的位标志的整数”。但这就是我能找到的所有信息。如何解释位标志?到目前为止,我已经解决了

整数(字段长度无关紧要)根据指定的属性返回以下位标志:

primary key 49967
primary & unique 53255
unique key 53251
foreign key 53257
unique & index 53259 (Auto increment 49675)

谢谢你的尽心帮助!


问题答案:

参见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';
}


 类似资料:
  • 问题内容: 我正在阅读http://docs.python.org/2/library/re.html。按此在蟒re.compile(以下简称“R” - [R “模式标志”)是指原始字符串符号: 解决方案是将Python的原始字符串表示法用于正则表达式模式。反斜杠在以’r’开头的字符串文字中不会以任何特殊方式处理。所以r“ \ n”是一个包含’'和’n’的两个字符的字符串,而“ \ n”是一个包含

  • 我一直在将s写入,而不关注flags字段,这是方法签名中的一个参数,它工作得很好,但我遇到了一个无法再忽略它们的实现: 这是我编写的一个到实用程序/从到/从实用程序,我想知道在编写它们时,是否应该将标志按原样传递给Key和Value,或者应该为Key传递0,而为Value传递。 我在文档中读到了什么是标志的定义: PARCELABLE_WRITE_RETURN_VALUE 在API级别1中添加 与

  • 我只是想知道这个命令中的标志是什么意思?

  • 当我使用spark运行一个作业时,我会得到以下日志?

  • 我第一次听说记号是在看书的时候: http://slf4j.org/faq.html 我检查了Logger对象的可用方法: null null 我从以下方面获得了更深入的信息: http://logback.qos.ch/manual/filters.html 但我还是一头雾水...请注意,我问的是为什么,而不是如何使用它们,所以这不是: null

  • 问题内容: 我看过这样的代码: 我的问题是参数名称前的标记是什么意思?这是否意味着在调用函数时必须指定参数? 此外,没有这个标记,有人能告诉我功能的不同吗?代码示例非常受欢迎。 问题答案: 更新(Swift 3。* …) 第一个参数签名的默认行为发生了巨大变化。要了解参数标签(例如“外部参数”)和参数名称(例如“局部参数”)如何工作,请阅读Apple的Swift书中的“函数参数标签和参数名称”一章