mysql_fetch_assoc
(PHP 4 >= 4.0.3, PHP 5)
mysql_fetch_assoc — 連想配列として結果の行を取得する
警告 この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。詳細な情報は MySQL: API の選択 や それに関連する FAQ を参照ください。 この関数の代替として、これらが使えます。
説明
mysql_fetch_assoc
( resource $result
) : array
取得した行に対応する連想配列を返し、内部のデータポインタを前に進めます。 mysql_fetch_assoc() は、 mysql_fetch_array() の 2 番目のパラメータを MYSQL_ASSOC に指定してコールするのと同じ働きをします。つまり、 連想配列のみを返します。
返り値
取得した行に対応する文字列の連想配列を返します。行がもうない場合には
false
を返します。
結果の複数のカラムが同じフィールド名を有している場合、最後のカラ ムが優先されます。同じ名前を有する他のカラムにアクセスするには、 mysql_fetch_row()を使用して数値添字を返すか、 エイリアス名を追加する必要があります。エイリアスの説明については、 mysql_fetch_array()の例を参照ください。
例
例1 mysql_fetch_assoc() のいろいろな例
<?php$conn = mysql_connect("localhost", "mysql_user", "mysql_password");if (!$conn) { echo "Unable to connect to DB: " . mysql_error(); exit;}if (!mysql_select_db("mydbname")) { echo "Unable to select mydbname: " . mysql_error(); exit;}$sql = "SELECT id as userid, fullname, userstatus FROM sometable WHERE userstatus = 1";$result = mysql_query($sql);if (!$result) { echo "Could not successfully run query ($sql) from DB: " . mysql_error(); exit;}if (mysql_num_rows($result) == 0) { echo "No rows found, nothing to print so am exiting"; exit;}// データ行が存在する間、それを $row に連想配列形式でセットする// 注: 結果が 1 行であることがわかっているのなら、ループを利用しなくてもよい// 注: ループ内で extract($row); を実行すれば、// $userid, $fullname, そして $userstatus を利用できるwhile ($row = mysql_fetch_assoc($result)) { echo $row["userid"]; echo $row["fullname"]; echo $row["userstatus"];}mysql_free_result($result);?>
注意
注意:
パフォーマンス
特筆すべき点として、mysql_fetch_assoc() が 著しい付加価値があるにもかかわらず、 mysql_fetch_row()より それほど遅くはないということが言えます。
注意:
この関数により返されるフィールド名は 大文字小文字を区別 します。
注意:
この関数は、NULL フィールドに PHPの
null
値を設定します。
参考
- mysql_fetch_row() - 結果を添字配列として取得する
- mysql_fetch_array() - 連想配列、添字配列、またはその両方として結果の行を取得する
- mysql_data_seek() - 内部的な結果ポインタを移動する
- mysql_query() - MySQL クエリを送信する
- mysql_error() - 直近に実行された MySQL 操作のエラーメッセージを返す