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

search for in the

mysqli::get_cache_stats> <mysqli->error
Last updated: Fri, 13 Nov 2009

view this page in

mysqli->field_count

mysqli_field_count

(PHP 5)

mysqli->field_count -- mysqli_field_count直近のクエリのカラムの数を返す

説明

オブジェクト指向型(プロパティ):

mysqli_result
int $field_count;

手続き型:

int mysqli_field_count ( mysqli $link )

link が指す接続における直近のクエリの カラムの数を返します。この関数は、クエリが空でない結果セットを 生成すべきなのかそうではないのかを判断するために mysqli_store_result() 関数を使用する際に有用です。

パラメータ

link

手続き型のみ: mysqli_connect() あるいは mysqli_init() が返すリンク ID。

返り値

結果セットのフィールド数を整数で返します。

例1 オブジェクト指向型

<?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("SELECT * FROM friends");

if (
$mysqli->field_count) {
    
/* これは select/show あるいは describe クエリです */
    
$result $mysqli->store_result();

    
/* 結果セットを処理します */
    
$row $result->fetch_row();

    
/* 結果セットを開放します */
    
$result->close();
}

/* 接続を閉じます */
$mysqli->close();
?>

例2 手続き型

<?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"SELECT * FROM friends");

if (
mysqli_field_count($link)) {
    
/* これは select/show あるいは describe クエリです */
    
$result mysqli_store_result($link);

    
/* 結果セットを処理します */
    
$row mysqli_fetch_row($result);

    
/* 結果セットを開放します */
    
mysqli_free_result($result);
}

/* 接続を閉じます */
mysqli_close($link);
?>



mysqli::get_cache_stats> <mysqli->error
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
mysqli->field_count
Jonathan
06-Mar-2007 11:43
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";
Typer85 at gmail dot com
02-Jan-2007 04:33
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,

?>
dedlfix
18-Jul-2006 05:26
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
jakerosoft at hotmail dot com
16-Aug-2005 04:15
<?
$fieldinfo = $result->fetch_field();
if ($fieldinfo & MYSQLI_NOT_NULL_FLAG)  {
  print "not null flag is set";
} else {
  print "not null flag is NOT set";
}
?>
Marc-Andr
07-Jul-2005 10:56
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";
?>

mysqli::get_cache_stats> <mysqli->error
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites