データベースMySQL関数(結果フィールド)
- mysql_field_flags〔結果において指定したフィールドのフラグを取得〕
- mysql_fetch_len〔指定したフィールドの長さを取得〕
- mysql_field_name〔結果において指定したフィールド名を取得〕
- mysql_field_seek〔結果ポインタを指定したフィールドオフセットにセット〕
- mysql_field_table〔指定したフィールドが含まれるテーブル名を取得〕
- mysql_field_type〔結果において指定したフィールドの型を取得〕
mysql_field_flags
結果において指定したフィールドのフラグを取得
unknown
第1引数結果IDは、mysql_query()関数の返り値です。 その結果IDから、指定したフィールドのフィールドフラグを取得します。 失敗した場合は、FALSEが返ります。
返り値は、個々のフラグが空白スペースで区切られた形式の文字列で返されます。 そのため、この返り値をexplode()関数で分割すれば、個々のフラグを取得できます。
運用システム上のMySQLがサポートしている場合、以下のフラグがレポートされます。
- not_null
- primary_key
- unique_key
- multiple_ley
- auto_increment
- blob
- unsigned
- timestamp
- zerofill
- binary
- enum
第2引数フィールドオフセットは0始まりです。 フィールドオフセットが存在しない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* 例1: mysql_field_flags() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customr");
$sql="SELECT id, firstname, lastname FROM tbl_customer WHERE id=3";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
$flags=mysql_field_flags($res, 0);
echo $flags."<br>";
/* 返り値を分割して個々のフラグを取得 */
print_r(explode(' ', $flags));
/* 出力例
not_null primary_key auto_increment
Array
(
[0] => not_null
[1] => primary_key
[2] => auto_increment
)
*/
?>
mysql_fetch_len
指定したフィールドの長さを取得
unknown
第1引数結果IDは、mysql_query()関数の返り値です。 その結果IDから、指定したフィールドの長さを取得します。 失敗した場合は、FALSEが返ります。
第2引数フィールドオフセットは0始まりです。 フィールドオフセットが存在しない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* 例1: mysql_field_len() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customr");
$sql="SELECT * FROM tbl_customer WHERE id=3";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
// フィールド数を取得しループ
$numFields=mysql_num_fields($res);
for($i=0; $i<$numFields; $i++){
// フィールド名を取得
$name=mysql_field_name($res, $i);
// フィールドの長さを取得
$length=mysql_field_len($res, $i);
echo "フィールド(".$name.")の長さ: ".$length."<br>"; //11
}
/* 出力例
フィールド(id)の長さ: 11
フィールド(firstname)の長さ: 48
フィールド(lastname)の長さ: 48
フィールド(age)の長さ: 11
*/
?>
mysql_field_name
結果において指定したフィールド名を取得
unknown
第1引数結果IDは、mysql_query()関数の返り値です。 その結果IDから、指定したフィールドの名前を取得します。 失敗した場合は、FALSEが返ります。
第2引数フィールドオフセットは0始まりです。 フィールドオフセットが存在しない場合は、E_WARNINGレベルのエラーが発生します。
この関数によって返されるフィールド名は大文字小文字を区別します。
<?
/* 例1: mysql_field_name() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customr");
$sql="SELECT * FROM tbl_customer WHERE id=3";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
// フィールド数を取得しループ
$numFields=mysql_num_fields($res);
for($i=0; $i<$numFields; $i++){
//フィールド名を取得
$name=mysql_field_name($res, $i);
echo "フィールド名: ".$name."<br>"; //11
}
/* 出力例
フィールド名: id
フィールド名: firstname
フィールド名: lastname
フィールド名: age
*/
?>
mysql_field_seek
結果ポインタを指定したフィールドオフセットにセット
unknown
第1引数結果IDは、mysql_query()関数の返り値です。 この関数は、指定したフィールドのオフセットに移動します。 失敗した場合は、FALSEが返ります。
この関数をコール後、mysql_fetch_field()関数をフィールドオフセットなしでコールした場合、このフィールドが返されます。
第2引数フィールドオフセットは0始まりです。 フィールドオフセットが存在しない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* 例1: mysql_field_seek() の例 */
$dbc=mysql_connect("localhost","root","");
mysql_select_db("db_customer");
$sql="SELECT * FROM tbl_customer";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
/* 以下の4つのフィールドがあるとする
id
firstname
lastname
age
*/
// 2つ目のフィールド(firstname)に移動
mysql_field_seek($res,1);
print_r(mysql_fetch_field($res));
/* 出力例
stdClass Object
(
[name] => firstname
[table] => tbl_customer
[def] =>
[max_length] => 4
[not_null] => 1
[primary_key] => 0
[multiple_key] => 0
[unique_key] => 0
[numeric] => 0
[blob] => 0
[type] => string
[unsigned] => 0
[zerofill] => 0
)
*/
// 3つ目のフィールド(lastname)に移動
mysql_field_seek($res,2);
print_r(mysql_fetch_field($res));
/* 出力例
stdClass Object
(
[name] => lastname
[table] => tbl_customer
[def] =>
[max_length] => 6
[not_null] => 1
[primary_key] => 0
[multiple_key] => 0
[unique_key] => 0
[numeric] => 0
[blob] => 0
[type] => string
[unsigned] => 0
[zerofill] => 0
)
*/
?>
mysql_field_table
指定したフィールドが含まれるテーブル名を取得
unknown
第1引数結果IDは、mysql_query()関数の返り値です。 この関数は、指定したフィールドが含まれるテーブルの名前を返します。 失敗した場合は、FALSEが返ります。
第2引数フィールドオフセットは0始まりです。 フィールドオフセットが存在しない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* 例1: mysql_field_table() の例 */
$dbc=mysql_connect("localhost","root","");
mysql_select_db("db_customer");
$sql="SELECT ken, firstname FROM tbl_address,tbl_customer";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
/* kenフィールド は、tbl_addressテーブルにあるものとする */
/* fistnameフィールド は、tbl_customerテーブルにあるものとする */
$table=mysql_field_table($res,0);
echo "kenフィールドがあるテーブルは、".$table." です<br>";
$table=mysql_field_table($res,1);
echo "firstnameフィールドがあるテーブルは、".$table." です<br>";
/* 出力例
kenフィールドがあるテーブルは、tbl_address です
firstnameフィールドがあるテーブルは、tbl_customer です
*/
?>
mysql_field_type
結果において指定したフィールドの型を取得
unknown
第1引数結果IDは、mysql_query()関数の返り値です。 この関数は成功した場合に指定したフィールドの型、失敗した場合にFALSEを返します。
返されるフィールドの型は、「int」、「real」、「string」、「blob」、その他MySQLドキュメントで詳細が規定されている型のうちのいずれかになります。
この関数は、mysql_field_name()関数と似ています。 引数は同じですが、フィールドの型が返される点が異なります。
第2引数フィールドオフセットは0始まりです。 フィールドオフセットが存在しない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* 例1: mysql_field_type() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer") or die("データベース選択失敗 :".mysql_error());
$res=mysql_query("SELECT * FROM tbl_customer") or die("クエリ失敗 :".mysql_error());
//フィールド数取得
$numFields=mysql_num_fields($res);
//行数取得
$numRows=mysql_num_rows($res);
//テーブル名取得
$table=mysql_field_table($res, 0);
echo $table." テーブルの内訳: フィールド数=".$numFields."/レコード数=".$numRows."<br><br>\n";
echo "このテーブルには、以下のフィールドが含まれています<br>\n";
for($i=0; $i<$numFields; $i++){
$type=mysql_field_type($res, $i);
$name=mysql_field_name($res, $i);
$len=mysql_field_len($res, $i);
$flags=mysql_field_flags($res, $i);
echo "タイプ=".$type."/名前=".$name."/長さ=".$len."/フラグ=".$flags."<br>\n";
}
/* 出力例
tbl_customer テーブルの内訳: フィールド数=4/レコード数=3
このテーブルには、以下のフィールドが含まれています
タイプ=int/名前=id/長さ=11/フラグ=not_null primary_key auto_increment
タイプ=string/名前=firstname/長さ=48/フラグ=not_null
タイプ=string/名前=lastname/長さ=48/フラグ=not_null
タイプ=int/名前=age/長さ=11/フラグ=
*/
?>