首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mysql_field_flags转换为mysqli

问将mysql_field_flags转换为mysqli
EN

Stack Overflow用户
提问于 2016-01-25 09:42:15
回答 2查看 946关注 0票数 4

我正在尝试将一个模块从mysql转换为mysqli。该模块一度使用了以下功能:

代码语言:javascript
复制
mysql_field_flags($fields,$n)

这将返回一系列标志,如:"not_null“、"primary_key”、"unique_key“等。

返回相同的mysqli函数是什么?因为

代码语言:javascript
复制
mysqli_fetch_field_direct($fields,$n)->flags

只返回整数,而不返回字段名。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-25 09:53:56

实际上,它确实返回一个整数,这是一个标志的位掩码。您可以将它与预定义常数 (名为*_FLAG)一起使用:

代码语言:javascript
复制
$flags = mysqli_fetch_field_direct($fields, $n)->flags;
if ($flags & MYSQLI_NOT_NULL_FLAG) {
    echo 'Field has NOT NULL';
}
票数 2
EN

Stack Overflow用户

发布于 2016-01-25 10:44:19

我已经创建了一个自定义函数,希望这将对您有所帮助。

代码语言:javascript
复制
/**
* Get column data type in mysqli
**/

function getColumnDataType($info){

    // default data types
    $mysql_data_type_hash = array(
    1=>'tinyint',
    2=>'smallint',
    3=>'int',
    4=>'float',
    5=>'double',
    7=>'timestamp',
    8=>'bigint',
    9=>'mediumint',
    10=>'date',
    11=>'time',
    12=>'datetime',
    13=>'year',
    16=>'bit',
    //252 is currently mapped to all text and blob types (MySQL 5.0.51a)
    253=>'varchar',
    254=>'char',
    246=>'decimal'
    );


    foreach ($mysql_data_type_hash as $key => $value) {
        if($key == $info->type){
            echo $value;
        }
    }

    if ($info->flags & MYSQLI_AUTO_INCREMENT_FLAG) {
        echo ' AUTO_INCREMENT';
    }

    if ($info->flags & MYSQLI_NOT_NULL_FLAG) {
        echo ' NOT NULL';
    }

    if ($info->flags & MYSQLI_NUM_FLAG) {
        echo ' NUMERIC';
    }

    if ($info->flags & MYSQLI_UNIQUE_KEY_FLAG) {
        echo ' UNIQUE INDEX';
    }
}

你怎么能使用它?

假设您的查询是:

代码语言:javascript
复制
$result = mysqli_query($link, "SELECT * FROM mytable");
$finfo = mysqli_fetch_field_direct($result, 0); // checking field 1

// call the function 
$type = getColumnDataType($finfo); 
echo $type; // int AUTO_INCREMENT NOT NULL NUMERIC 

请注意,我的ist字段是自动增量,因此我得到如下结果:

代码语言:javascript
复制
int AUTO_INCREMENT NOT NULL NUMERIC 

边注:

对于其他标志,您可以遵循以下链接:

MYSQLI常数

其他堆栈回答

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34989329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档