PHP.mk документација

mysqli_result::fetch_field

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

mysqli-result.fetch-field.php PHP.net прокси Преводот е вчитан
Оригинал на PHP.net
Патека mysqli-result.fetch-field.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + преведен приказ Кодовите, табелите и белешките остануваат читливи во истиот тек.
mysqli_result::fetch_field

Референца за `mysqli-result.fetch-field.php` со подобрена типографија и навигација.

mysqli-result.fetch-field.php

mysqli_result::fetch_field

mysqli_fetch_field

класата mysqli_driver

mysqli_result::fetch_field -- mysqli_fetch_fieldВраќа следно поле во множеството резултати

= NULL

Напиши целосна ознака на елемент

public mysqli_result::fetch_field(): object|false

Процедурален стил

mysqli_fetch_field(mysqli_result $result): object|false

Враќа дефиниција на една колона од множеството резултати како објект. Повикајте ја оваа функција повеќепати за да добиете информации за сите колони во множеството резултати.

Параметри

result

објектот како свој прв аргумент. mysqli_result Само процедурален стил: А mysqli_query(), mysqli_store_result(), mysqli_use_result() or mysqli_stmt_get_result().

Вратени вредности

Враќа објект кој содржи информации за дефиницијата на полето или false ако нема достапни информации за полето.

Својства на објектот
Својство = NULL
name Име на колоната
orgname Оригинално име на колоната ако е наведен новитет
table Име на табелата на која припаѓа ова поле (ако не е пресметано)
orgtable Оригинално име на табелата ако е наведен новитет
def Неискористено. Секогаш празен стринг
db Враќа листа на имиња на табели од MySQL база на податоци.
catalog Неискористено. Секогаш "def"
max_length Максималната ширина на полето за сетот на резултати. Од PHP 8.1, оваа вредност е секогаш 0.
length Ширината на полето во бајти. За колони со стринг, вредноста на должината варира во зависност од карактерниот сет на врската. На пример, ако карактерниот сет е latin1, еднобајтен карактерен сет, вредноста на должината за SELECT 'abc' прашање е 3. Ако карактерниот сет е utf8mb4, повеќебајтен карактерен сет во кој карактерите зафаќаат до 4 бајти, вредноста на должината е 12.
charsetnr Бројот на кодното множество за полето.
flags Бројот на множеството знаци за полето.
type Цел број што претставува битни знаменца за полето.
decimals Типот на податоци што се користи за ова поле

Примери

Пример #1 Обектно-ориентиран стил

<?php
$mysqli
= new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if (
$result = $mysqli->query($query)) {

/* Get field information for all columns */
while ($finfo = $result->fetch_field()) {

printf("Name: %s\n", $finfo->name);
printf("Table: %s\n", $finfo->table);
printf("max. Len: %d\n", $finfo->max_length);
printf("Flags: %d\n", $finfo->flags);
printf("Type: %d\n\n", $finfo->type);
}
$result->close();
}

/* close connection */
$mysqli->close();
?>

Пример #2 Процедурален стил

<?php
$link
= mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5";

if (
$result = mysqli_query($link, $query)) {

/* Get field information for all fields */
while ($finfo = mysqli_fetch_field($result)) {

printf("Name: %s\n", $finfo->name);
printf("Table: %s\n", $finfo->table);
printf("max. Len: %d\n", $finfo->max_length);
printf("Flags: %d\n", $finfo->flags);
printf("Type: %d\n\n", $finfo->type);
}
mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

Горните примери ќе дадат излез:

Name:     Name
Table:    Country
max. Len: 11
Flags:    1
Type:     254

Name:     SurfaceArea
Table:    Country
max. Len: 10
Flags:    32769
Type:     4

Види Исто така

  • mysqli_num_fields() Бројот на децимални места за нумерички полиња и прецизноста на фракционите секунди за временски полиња.
  • mysqli_fetch_field_direct() - Преземање мета-податоци за едно поле
  • mysqli_fetch_fields() - Враќа следното поле во множеството резултати
  • mysqli_field_seek() - Поставете покажувач на резултатот на одреден офсет на полето

Белешки од корисници 8 белешки

iansoko на hotmail dot com
пред 14 години
here are the data types that correspond to the TYPE number returned by fetch_field. 

thought i would post this here since i couldn't find the info elsewhere.

numerics 
-------------
BIT: 16
TINYINT: 1
BOOL: 1
SMALLINT: 2
MEDIUMINT: 9
INTEGER: 3
BIGINT: 8
SERIAL: 8
FLOAT: 4
DOUBLE: 5
DECIMAL: 246
NUMERIC: 246
FIXED: 246

dates
------------
DATE: 10
DATETIME: 12
TIMESTAMP: 7
TIME: 11
YEAR: 13

strings & binary
------------
CHAR: 254
VARCHAR: 253
ENUM: 254
SET: 254
BINARY: 254
VARBINARY: 253
TINYBLOB: 252
BLOB: 252
MEDIUMBLOB: 252
TINYTEXT: 252
TEXT: 252
MEDIUMTEXT: 252
LONGTEXT: 252
Анонимен
пред 14 години
The constants for the TYPE number returned by fetch_field are enumerated here (MYSQLI_TYPE_*):
http://php.net/manual/en/mysqli.constants.php
ragtag на hotmail dot com
пред 17 години
The flags used by MySql are:                                                                                                                                            
       NOT_NULL_FLAG = 1                                                                              
       PRI_KEY_FLAG = 2                                                                               
       UNIQUE_KEY_FLAG = 4                                                                            
       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                                                                                
       NUM_FLAG = 32768                                                                               
       PART_KEY_FLAG = 16384                                                                          
       GROUP_FLAG = 32768                                                                             
       UNIQUE_FLAG = 65536                                                                            

To test if a flag is set you can use & like so:
<?php
$meta = $mysqli_result_object->fetch_field();
if ($meta->flags & 4) { 
  echo 'Unique key flag is set'; 
} 
?>
andre на koethur точка de
пред 11 години
Here are two methods for converting the 'type' and 'flags' attributes to text for debugging purposes. They both use the predefined MYSQLI_ constants to generate the text.

<?php

public static function h_type2txt($type_id)
{
    static $types;

    if (!isset($types))
    {
        $types = array();
        $constants = get_defined_constants(true);
        foreach ($constants['mysqli'] as $c => $n) if (preg_match('/^MYSQLI_TYPE_(.*)/', $c, $m)) $types[$n] = $m[1];
    }

    return array_key_exists($type_id, $types)? $types[$type_id] : NULL;
}

public static function h_flags2txt($flags_num)
{
    static $flags;

    if (!isset($flags))
    {
        $flags = array();
        $constants = get_defined_constants(true);
        foreach ($constants['mysqli'] as $c => $n) if (preg_match('/MYSQLI_(.*)_FLAG$/', $c, $m)) if (!array_key_exists($n, $flags)) $flags[$n] = $m[1];
    }

    $result = array();
    foreach ($flags as $n => $t) if ($flags_num & $n) $result[] = $t;
    return implode(' ', $result);
}

?>
sofe2038 на gmail точка com
пред 8 години
The constants in a few other comments above appear to be inaccurate. Here are some more official references that seem quite hard to search.

The "type" attribute: https://dev.mysql.com/doc/internals/en/com-query-response.html#column-type
The "flags" attribute: https://github.com/google/mysql/blob/master/include/mysql_com.h#L133

In addition, all attributes are explained on the COM_QUERY_RESPONSE page too: https://dev.mysql.com/doc/internals/en/com-query-response.html#column-definition
rvila на revolutionvisualarts dot com
пред 9 години
The predefined constant values returned by the function get_predefined_constants() for:

MYSQLI_TYPE_CHAR = 1
MYSQLI _TYPE_TINYINT = 1

If the code is used to categorized the type of field use this values will of course create confusion. For example:

if($fieldtype === "CHAR"){
    $field_html_attribute = "text";
    $field_html_length = 1;
} elseif($fieldtype === "TINYINT") {
    $field_html_attribute = "number";
    $field_html_length = 1;
}

If an array is created to set the key as the numeric value and the value of that key as the the text title, TINYINT will be replaced by CHAR value. But is this process is reversed, then the code will select TINYINT if the foreach statement set to break when the numeric value of the flag equals the value of the current key as the first intance.

Base in the note added by Johnathan at http://php.net/manual/en/mysqli.field-count.php the values should be:

CHAR = 254
TINYINT = 1

But predefined function attributes the value 254 to MYSQLI_TYPE_STRING.

Just for FYI
nick
пред 8 години
It is not possible to get the values for an enum or set field through fetch_fields(). As far as I can tell this is because it hasn't been implemented in the mysqlnd api but whatever the reason it is not possible and you must issue a query like SHOW COLUMNS directly and interrogate the result to determine them.

Incidentally you need to check the enum_flag rather than look for the enum_type to determine whether a field is enum or not. The type returned is usually some kind of string.
miqrogroove на gmail точка com
пред 13 години
Beware the values of the predefined constants.  They do not always correlate with the actual field types.  For example:

MYSQLI_TYPE_BLOB: 252
MYSQLI_TYPE_TINY_BLOB: 249
MYSQLI_TYPE_MEDIUM_BLOB: 250
MYSQLI_TYPE_LONG_BLOB: 251

MySQLi will indeed return a value of 252 for a tinytext field, but as you can see, this does not correspond to the value of MYSQLI_TYPE_TINY_BLOB.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.