Search
  1. mysql_fetch_array〔連想配列、添字配列、またはその両方として結果の行を取得〕
  2. mysql_fetch_assoc〔連想配列として結果の行を取得〕
  3. mysql_fetch_field〔結果からカラム情報を取得しオブジェクトとして返す〕
  4. mysql_fetch_lengths〔結果における各出力の長さを取得〕
  5. mysql_fetch_object〔オブジェクトとして結果行を取得〕
  6. mysql_fetch_row〔添字配列として結果の行を取得〕

mysql_fetch_array
連想配列、添字配列、またはその両方として結果の行を取得

unknown

array mysql_fetch_array ( resource 結果ID[, int $結果タイプ ] )

mysql_query()関数のコールで得られた結果の行を連想配列、添字配列、またはその両方で取得します。 最終行までいった場合に、FALSEを返します。 返される配列の形式は、オプションの第2引数結果タイプで指定できます。

この関数は、内部のデータポインタを前に進めます。 そのため、この関数を続けてコールした場合は、結果における次の行が返ります。

オプションの第2引数結果タイプは、以下の定数値をとります。

結果タイプの定数値
定数名説明
MYSQL_ASSOC連想配列(mysql_fetch_assoc()関数と同じ動作)
MYSQL_NUM添字配列(mysql_fetch_row()関数を同じ動作)
MYSQL_BOTH連想添字と数値添字を両方持つ配列(デフォルト)

結果に同名のフィールド名が複数ある場合は、最後のカラムが優先されます。 同名の他のカラムにアクセスするには、mysql_fetch_row()関数を使用してそのカラムの数値添字を使うか、 またはカラムの別名(エイリアス)を定義します。カラムの別名を定義した場合は、本来の列名でそのカラムにアクセスできません。

#重複した列名に対して別名を定義する問合せ
SELECT table1.field AS foo, table2.field AS bar FROM table1, table2

この関数によって返されるフィールド名は大文字小文字を区別します。 NULLフィールドにPHPのNULL値を設定します。

<?
/* 例:mysql_fetch_array()関数をMYSQL_NUMと共に利用 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer");
$sql="SELECT id, firstname, lastname FROM tbl_customer";
$res=mysql_query($sql,$dbc);
while($dat=mysql_fetch_array($res,MYSQL_NUM)){
    printf("ID: %s NAME: %s %s",$dat[0],$dat[1],$dat[2]); echo "<br>";
}
mysql_free_result($res);


/* 例:mysql_fetch_array()関数をMYSQL_ASSOCと共に利用 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer");
$sql="SELECT id, firstname, lastname FROM tbl_customer";
$res=mysql_query($sql,$dbc);
while($dat=mysql_fetch_array($res,MYSQL_ASSOC)){
    printf("ID: %s NAME: %s %s",$dat["id"],$dat["firstname"],$dat["lastname"]); echo "<br>";
}
mysql_free_result($res);


/* 例:mysql_fetch_array()関数をMYSQL_BOTHと共に利用 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer");
$sql="SELECT id, firstname, lastname FROM tbl_customer";
$res=mysql_query($sql,$dbc);
while($dat=mysql_fetch_array($res,MYSQL_BOTH)){
    printf("ID: %s NAME: %s %s",$dat[0],$dat["firstname"],$dat["lastname"]); echo "<br>";
}
mysql_free_result($res);

/* 出力結果は、上記3つの例とも同様
ID: 1 NAME: ana sui
ID: 2 NAME: paul smith
ID: 16 NAME: tom cruise
*/
?>

mysql_fetch_assoc
連想配列として結果の行を取得

unknown

array mysql_fetch_assoc ( resource 結果ID)

mysql_query()関数のコールで得られた結果の行を、連想配列として取得します。 指定した結果IDから1行分のデータを取得し、最終行までいった場合にFALSEを返します。

この関数は、内部のデータポインタを前に進めます。 そのため、この関数を続けてコールした場合は、結果における次の行が返ります。

mysql_fetch_array()関数の第2引数に定数MYSQL_ASSOCを指定してコールするのと同じ動作です。

結果に同名のフィールド名が複数ある場合は、最後のカラムが優先されます。 同名の他のカラムにアクセスするには、mysql_fetch_row()関数を使用してそのカラムの数値添字を使うか、 またはカラムの別名(エイリアス)を定義します。カラムの別名を定義した場合は、本来の列名でそのカラムにアクセスできません。

#重複した列名に対して別名を定義する問合せ
SELECT table1.field AS foo, table2.field AS bar FROM table1, table2
<?
/* 例1: mysql_fetch_assoc() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer");
$sql="SELECT id as userid, firstname, lastname FROM tbl_customer WHERE id=2";
$res=mysql_query($sql,$dbc) or die ("クエリ失敗 :".mysql_error());
if(mysql_num_rows($res)==0){
   echo "データ行が見つかりません<br>";
   exit;
}
// データ行が存在する間、それを $row に連想配列形式でセット
// 注: 結果が 1 行であることがわかっているのなら、ループ不要
// 注: ループ内で extract($row); を実行すれば、$userid, $firstname, $lastname 利用可
while($dat=mysql_fetch_assoc($res)){
    //extract($dat);
    //printf("ID: %s  NAME %s %s<br>\n",$userid,$firstname,$lastname);
    printf("ID: %s  NAME: %s %s<br>\n",$dat["userid"],$dat["firstname"],$dat["lastname"]);
}
mysql_free_result($res);
/* 出力例
ID: 2  NAME: paul smith
*/
?>


<?
/* 例2: mysql_fetch_assoc() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer");
$sql="SELECT * FROM tbl_customer";
$res=mysql_query($sql,$dbc) or die ("クエリ失敗 :".mysql_error());
while($dat=mysql_fetch_assoc($res)){
    print_r($dat); echo "<br>\n";
}
//再度ループするには、フィールドオフセットを先頭に戻すこと!
mysql_data_seek($res0);
while($dat=mysql_fetch_assoc($res)){
    print_r($dat); echo "<br>\n";
}

/* 出力例
Array ( [id] => 1 [firstname] => ana [lastname] => sui [age] => 33 )
Array ( [id] => 2 [firstname] => paul [lastname] => smith [age] => 20 )
Array ( [id] => 16 [firstname] => tom [lastname] => cruise [age] => 40 )
Array ( [id] => 1 [firstname] => ana [lastname] => sui [age] => 33 )
Array ( [id] => 2 [firstname] => paul [lastname] => smith [age] => 20 )
Array ( [id] => 16 [firstname] => tom [lastname] => cruise [age] => 40 ) 
*/
?>

mysql_fetch_field
結果からカラム情報を取得しオブジェクトとして返す

unknown

object mysql_fetch_field ( resource 結果ID[, int $フィールドオフセット ] )

mysql_query()関数のコールで得られた結果から、フィールド情報を含むオブジェクトを返します。 この関数は、特定のクエリ結果の中のフィールド関連情報を取得するために使用できます。

オプションの第2引数フィールドオフセット0始まりです。 フィールドオフセットの指定がない場合は、まだこの関数で情報を取得されていないフィールドのうち最初のものが適用されます。

この関数によって返されるフィールド名は大文字小文字を区別します。

返り値のオブジェクトのプロパティ
プロパティ名説明
nameカラム名
tableカラムが属しているテーブルの名前
defカラムのデフォルト値
lengthカラムの最大長
not_nullカラムがNULL値をとることができない場合は、1
primary_keyカラムが主キーなら、1
unique_keyカラムがユニークキーなら、1
multiple_keyカラムが非ユニークキーなら、1
numericカラムが数値(numeric)であれば、1
blobカラムがBLOBであれば、1
typeカラムの型
unsigndカラムが符号無し(unisigned)であれば、1
zerofillカラムがゼロで埋められている(zero-filled)の場合に、1
<?
/* 例 1. mysql_fetch_field() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
$db_selected=mysql_select_db("db_customer",$dbc) or die("データベース選択失敗 :".mysql_error());
$sql="SELECT * FROM tbl_customer";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
// カラムのメタデータを取得する
$i=0;
while($i<mysql_num_fields($res)){
   echo "カラム $i の情報:<br>\n";
   $meta=mysql_fetch_field($res,$i) or die("情報が見つかりません :".mysql_error());
   echo "<pre>
blob:         $meta->blob
max_length:   $meta->max_length
multiple_key: $meta->multiple_key
name:         $meta->name
not_null:     $meta->not_null
numeric:      $meta->numeric
primary_key:  $meta->primary_key
table:        $meta->table
type:         $meta->type
default:      $meta->def
unique_key:   $meta->unique_key
unsigned:     $meta->unsigned
zerofill:     $meta->zerofill
</pre>
";
   $i++;
}
mysql_free_result($res);

/* 出力例
カラム 0 の情報:

blob:         0
max_length:   2
multiple_key: 0
name:         id
not_null:     1
numeric:      1
primary_key:  1
table:        tbl_customer
type:         int
default:      
unique_key:   0
unsigned:     0
zerofill:     0

カラム 1 の情報:

blob:         0
max_length:   4
multiple_key: 0
name:         firstname
not_null:     1
numeric:      0
primary_key:  0
table:        tbl_customer
type:         string
default:      
unique_key:   0
unsigned:     0
zerofill:     0
*/
?>

mysql_fetch_lengths
結果における各出力の長さを取得

unknown

array mysql_fetch_lengths ( resource 結果ID)

mysql_fetch_row()関数mysql_fetch_array()関数mysql_fetch_object()関数により、直近に取得された行における各フィールドの長さを格納した配列を返します。 失敗した場合にFALSEを返します。

オプションの第2引数フィールドオフセット0始まりです。 フィールドオフセットの指定がない場合は、FALSEを返します。

<?
$dbc=@mysql_connect("localhost","root","admin") or die("MySQL接続失敗: ".mysql_error());
$sql="SELECT FirstName, LastName FROM db_user.tbl_customer WHERE UserID='U002'";
$result=mysql_query($sql) or die('クエリ送信失敗: '.mysql_error());

/* 連想配列として結果の行を取得 */
$row=mysql_fetch_assoc($result);
print_r($row);        //Array ( [FirstName] => 太郎 [LastName] => 田中 )

/* 結果における各出力の長さを取得 */
$lengths=mysql_fetch_lengths($result);
print_r($lengths);    //Array ( [0] => 4 [1] => 4 )
?>

mysql_fetch_object
オブジェクトとして結果行を取得

unknown

array mysql_fetch_object ( resource 結果ID)

mysql_query()関数のコールで得られた結果の行をオブジェクトとして取得します。 指定した結果IDから1行分のデータを取得し、最終行までいった場合にFALSEを返します。

この関数は、内部のデータポインタを前に進めます。 そのため、この関数を続けてコールした場合は、結果における次の行が返ります。

この関数は、配列の代わりにオブジェクトが返される点を除いて、mysql_fetch_array()関数と類似しています。 フィールド名によってのみデータにアクセスできます(数値フィールドオフセットによるアクセス不可)。

この関数によって返されるフィールド名は、大文字小文字を区別します。 また、NULLフィールドには、PHPのNULL値を設定します。

<?
/* 例1: mysql_fetch_object() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customr");
$sql="SELECT * FROM tbl_customer";
$res=mysql_query($sql,$dbc);
while($dat=mysql_fetch_object($res)){
    printf("ID: %s  NAME: %s %s<br>\n"$dat->id$dat->firstname$dat->lastname);
}
mysql_free_result($res);
?>

mysql_fetch_row
添字配列として結果の行を取得

unknown

array mysql_fetch_row ( resource 接続ID )

mysql_query()関数のコールで得られた結果の行を、添字配列0始まり)として取得します。 指定した結果IDから1行分のデータを取得し、最終行までいった場合にFALSEを返します。

mysql_fetch_array()関数の第2引数に定数MYSQL_NUMを指定してコールするのと同じ動作です。

この関数は、内部のデータポインタを前に進めます。 そのため、この関数を続けてコールした場合は、結果における次の行が返ります。

この関数は、NULLフィールドにPHPのNULL値を設定します。

<?
/* 例1: mysql_fetch_row() の例 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗 :".mysql_error());
mysql_select_db("db_customer");
$sql="SELECT id, firstname, lastname FROM tbl_customer WHERE id=2";
$res=mysql_query($sql,$dbc) or die("クエリ失敗 :".mysql_error());
$dat=mysql_fetch_row($res);
printf("ID: %s  NAME: %s %s<br>\n",$dat[0],$dat[1],$dat[2]);
/* 出力例
ID: 2 NAME: paul smith
*/
?>

関連コンテンツ

Q. このサイトの情報はお役に立ちましたでしょうか?

投票する 投票結果を見る

管理人に【web拍手】を送るweb拍手(1行メッセージも送れます♪)

pagetop