downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

mysqli::get_charset> <mysqli->error
[edit] Last updated: Fri, 17 May 2013

view this page in

mysqli_field_count

mysqli->field_count

(PHP 5)

mysqli_field_count -- mysqli->field_countRetorna o número de colunas para a consulta mais recente

Descrição

Estilo de procedimento:

int mysqli_field_count ( object $link )

Estilo orientado a objeto (metodo):

int field_count ( void )

Retorna o número de colunas para a consulta mais recente na conexão representada pelo parâmetro link. Esta função pode ser útil ao usar a função mysqli_store_result() para determinar se a consulta produziu um conjunto de resultados vazio ou não sem conhecer a natureza da consulta.

Valores de retorno

Um inteiro representando o número de campos no conjunto de resultados

Exemplo

Exemplo #1 Estilo orientado a objeto

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

$mysqli->query"DROP TABLE IF EXISTS friends"); 
$mysqli->query"CREATE TABLE friends (id int, name varchar(20))"); 
 
$mysqli->query"INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");


$mysqli->real_query($HTTP_POST_VARS['query']);

if (
mysqli_field_count($link)) {
    
/* this was a select/show or describe query */
    
$result $mysqli->store_result();
    
    
/* process resultset */
    
$row $result->fetch_row();

    
/* free resultset */
    
$result->close();
}

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

Exemplo #2 Estilo de procedimento

<?php
$link 
mysqli_connect("localhost""my_user""my_password""test");

mysqli_query($link"DROP TABLE IF EXISTS friends"); 
mysqli_query($link"CREATE TABLE friends (id int, name varchar(20))"); 
 
mysqli_query($link"INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");

mysqli_real_query($link$HTTP_POST_VARS['query']);

if (
mysqli_field_count($link)) {
    
/* this was a select/show or describe query */
    
$result mysqli_store_result($link);
    
    
/* process resultset */
    
$row mysqli_fetch_row($result);

    
/* free resultset */
    
mysqli_free_result($result);
}

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



mysqli::get_charset> <mysqli->error
[edit] Last updated: Fri, 17 May 2013
 
add a note add a note User Contributed Notes mysqli_field_count - [5 notes]
up
0
Jonathan
6 years ago
Some corrections ;o)

$mysqli_type = array();
$mysqli_type[0] = "DECIMAL";
$mysqli_type[1] = "TINYINT";
$mysqli_type[2] = "SMALLINT";
$mysqli_type[3] = "INTEGER";
$mysqli_type[4] = "FLOAT";
$mysqli_type[5] = "DOUBLE";

$mysqli_type[7] = "TIMESTAMP";
$mysqli_type[8] = "BIGINT";
$mysqli_type[9] = "MEDIUMINT";
$mysqli_type[10] = "DATE";
$mysqli_type[11] = "TIME";
$mysqli_type[12] = "DATETIME";
$mysqli_type[13] = "YEAR";
$mysqli_type[14] = "DATE";

$mysqli_type[16] = "BIT";

$mysqli_type[246] = "DECIMAL";
$mysqli_type[247] = "ENUM";
$mysqli_type[248] = "SET";
$mysqli_type[249] = "TINYBLOB";
$mysqli_type[250] = "MEDIUMBLOB";
$mysqli_type[251] = "LONGBLOB";
$mysqli_type[252] = "BLOB";
$mysqli_type[253] = "VARCHAR";
$mysqli_type[254] = "CHAR";
$mysqli_type[255] = "GEOMETRY";
up
0
Typer85 at gmail dot com
6 years ago
For those interested and to clarify the Manual Entry.

For query statements that are DESIGNED to return a result set of some sort, this function will always return the number of fields in the table that was queried.

I said DESIGNED because the return value has no effect on whether or not the actual query matched any rows or not.

For example, say I have a table that has 2 fields and only 10 rows. I issue the following query:

<?php

// Assume Connection Blah Blah.

mysqli_query( $connObject , "Select * From `table` Where `Id` > 1000");

// Get Number Of Fields.

mysqli_field_count( $connObject );

// Will Return 2 --> The Number of fields in the table!

?>

It is quite clear that the query itself will never return a result set because I asked it to return rows which have an Id over 1000 and there are only 10 rows.

But because the nature of the query itself is to return a result set, the field count is always returned no matter what.

In contrast, if the query does anything that does not return a result set by nature, such as an insert or update, the field count will always be 0.

Hence, you can easily determine the nature of this query dynamically using these return values.

Good Luck,

?>
up
0
dedlfix
6 years ago
There are MYSQLI_TYPE_* constants for the type property (listed in http://php.net/manual/en/ref.mysqli.php).

e.g.
<?php
if ($finfo->type == MYSQLI_TYPE_VAR_STRING)
 
// a VARCHAR
up
0
jakerosoft at hotmail dot com
7 years ago
<?
$fieldinfo
= $result->fetch_field();
if (
$fieldinfo & MYSQLI_NOT_NULL_FLAG)  {
  print
"not null flag is set";
} else {
  print
"not null flag is NOT set";
}
?>
up
0
7 years ago
The "type" property will return a numerical representation of a field type instead of a "meaningful" string.

Here is an array that may help you:

<?php
$mysqli_type
= array();
$mysqli_type[0] = "decimal";
$mysqli_type[1] = "tinyint";
$mysqli_type[2] = "smallint";
$mysqli_type[3] = "int";
$mysqli_type[4] = "float";
$mysqli_type[5] = "double";
$mysqli_type[7] = "timestamp";
$mysqli_type[8] = "bigint";
$mysqli_type[9] = "mediumint";
$mysqli_type[10] = "date";
$mysqli_type[11] = "time";
$mysqli_type[12] = "datetime";
$mysqli_type[13] = "year";
$mysqli_type[252] = "blob"; // text, blob, tinyblob,mediumblob, etc...
$mysqli_type[253] = "string"; // varchar and char
$mysqli_type[254] = "enum";
?>

 
show source | credits | sitemap | contact | advertising | mirror sites