我正在尝试将一个模块从mysql转换为mysqli。该模块一度使用了以下功能:
mysql_field_flags($fields,$n)这将返回一系列标志,如:"not_null“、"primary_key”、"unique_key“等。
返回相同的mysqli函数是什么?因为
mysqli_fetch_field_direct($fields,$n)->flags只返回整数,而不返回字段名。
发布于 2016-01-25 09:53:56
实际上,它确实返回一个整数,这是一个标志的位掩码。您可以将它与预定义常数 (名为*_FLAG)一起使用:
$flags = mysqli_fetch_field_direct($fields, $n)->flags;
if ($flags & MYSQLI_NOT_NULL_FLAG) {
echo 'Field has NOT NULL';
}发布于 2016-01-25 10:44:19
我已经创建了一个自定义函数,希望这将对您有所帮助。
/**
* 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';
}
}你怎么能使用它?
假设您的查询是:
$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字段是自动增量,因此我得到如下结果:
int AUTO_INCREMENT NOT NULL NUMERIC 边注:
对于其他标志,您可以遵循以下链接:
https://stackoverflow.com/questions/34989329
复制相似问题